私は最近、OSX Mavericksにアップグレードしました。それ以降、開発マシンで前述のエラーが発生し始めました。コードに明らかな問題はありません(自動生成 Yii サンプルアプリケーションです)。 Mavericksへのアップグレードの一部として何が起こったか:
それ以来、ウェブサイトの読み込みと再読み込みを数回行った後、この問題が発生します。このエラーが発生した後、私のWebサーバーは、localhostでホストされている他のアプリケーションに対して同じエラーを返し続けます。静的なWebページは問題なく提供されることを述べておかなければなりません。
このトピックについていくつかの threads を見てきました。ほとんどの場合、ファイルハンドルが適切に閉じられていないため、開いているファイルの制限しきい値を超えているコードの問題を指摘しています。私はこれも見つけました thread これは、これがzendデバッガーの問題である可能性を示唆しているようです。また、php 5.2.xに提出された バグレポート もあります。スレッド here に続いて、私は次のことを試しました:
$ ulimit -a
どのレポート:
open files (-n) 256
また、
sysctl -a | grep files
戻り値、
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
kern.num_files: 3248
別の興味深い thread は、次を使用してこの制限(現在は256)を上げることを提案しています。
ulimit -n 1024
私はすべてを試しましたが、何も機能していないようです。また、問題は常に再現可能ではありません。
ulimit -n 1024
を使用するとApacheに影響があるのではないかと思います。これは、私が読んだことから、シェルが開くことができるファイルの数に影響するためです。
どんな助けでもありがたいです。
編集:
Apache
を再起動すると、エラーが再び発生するまで少しの間役に立ちます。私はおそらく情報過多に苦しんでいた。可能な説明が提供されます ここ 私も元の投稿で言及しました。 OPが彼がMac OSX 10.8.xで作業していると述べている細かいところを見逃したようです。 10.9を使用しているので、ページからzenddebugger.soをダウンロードしましたが、問題はありません。 1つも取得していませんtoo many open files
一日中。
つまり、それはおそらくZendDebuggerの問題でした。
http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/#Mac-OS-X から恥知らずに盗まれた
Mac OS Xシステムの現在の制限を確認するには、次のコマンドを実行します。
$ launchctl limit maxfiles
最後の2列は、それぞれソフト制限とハード制限です。
OS X 10.7(Lion)以降の最大オープンファイル制限を調整するには、/ etc/launchd.confを編集して、両方の値の制限を次のように増やします。適切な。
たとえば、ソフト制限を16384ファイルに、ハード制限を32768ファイルに設定するには、次の手順を実行します。
現在の制限を確認します。
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 10240 10240
編集(または作成)/ etc/launchd.confし、制限を増やします。次のような行を追加します(環境に適した値を使用)。
limit maxfiles 16384 32768
ファイルを保存し、システムを再起動して新しい制限を有効にします。再起動後、launchctl limitコマンドで新しい制限を確認します。
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 16384 32768
Apacheの実行中にこの問題が発生した場合は、Apacheを設定して制限を増やすことができます。
$ Sudo vi /usr/sbin/apachectl
検索:ULIMIT_MAX_FILES=""
この行を次のように変更します。
ULIMIT_MAX_FILES="ulimit 4096"
次に:Sudo apachectl restart
これは、CLIスクリプトでは機能しません。ただし、~/.bash_profile
(または同等のもの)にulimitを直接追加すると、その目的で機能するはずです。
これには、他のアプリに影響を与えることなく、Apacheおよび端末に特定の制限を設定できるという利点があります。
また、その環境に適用可能なコマンドでulimit
を置き換えることにより、この方法を他のOSに適合させることができるはずです。
El Capitainでも同じ問題が発生していました。記事を見つけました here ソリューションの正当なクレジットを借りています。以下のアクションに従ってください:
オープンファイルの制限の調整Yosemite以降でシステム全体のオープンファイルの制限を調整するには、2つの構成ファイルを作成する必要があります。 1つ目は、/ Library/LaunchDaemons/limit.maxfiles.plistにあるプロパティリスト(別名plist)ファイルで、次のXML構成が含まれています。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>65536</string>
<string>65536</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
これにより、開いているファイルの制限が65536に設定されます。2番目のplist構成ファイルは、/ Library/LaunchDaemons/limit.maxproc.plistに次のように保存する必要があります内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
両方のplistファイルはroot:wheelが所有し、権限-rw-r–r–を持っている必要があります。システムを再起動します。
また、.bashrcのユーザーセッションにそれらを設定して、次のように追加することをお勧めします。
ulimit -n 65536
ulimit -u 2048
お役に立てれば。
上記のデバッガパッチの回答について。残念ながら、上記の回答はphpバージョン5.4に適用され、php 5.3に限定する必要があるため、私にはうまくいきません。
Zendはサーバーのバージョン6.3をリリースしました。これは5.3でphpをサポートします。私はしばらく(ulimitをAppleのデフォルトに戻した後)インストールを試し、テストして問題は発生していません。アップグレード前は、制限を引き上げずにphpデバッグを行うことはできませんでした。
あたり http://forums.zend.com/viewtopic.php?t=110823&start=10#p219438 これは、6.2で修正されたZend Serverのバグにすぎないと思います。
XDebugの実行で同じエラーが発生しました。アップグレードで問題が解決しました。
見る: