web-dev-qa-db-ja.com

開いているファイルが多すぎます

Php-fpm.confに私は持っています:

rlimit_files = 8192

私のサーバーはJoyentの1GSmartMachineです。つまり、1GBのメモリを搭載したSolarisです。

私の問題は、高負荷時に次のようなエラーが発生することです。

Warning (2): touch() [function.touch]: Unable to create file app/tmp/cache/persistent/cake_core_users_da because Too many open files in [cake/libs/file.php, line 125]

Rlimit_filesが低すぎますか?その場合、どのくらい高く設定する必要がありますか?

1
webjay

私の問題はどこか別の場所にあり、phpプロセスが生き続けることに関連していると思います。彼らを永遠に生き続けさせないことで、どういうわけかそれを修正しました。

0
webjay

実際に機能していると思いますか?プロセスIDで「pfiles」を使用して、実際に開いているものを確認できます。プロセスIDで「prctl」を実行して「process.max-file-descriptor」値を探すこともできます。基本値、特権値、およびシステム値がリストされます。プロセスの制限はそれらの中で最も低いものです。それが実際にそれだけ多く開いている場合、それはアプリケーションのファイル記述子リークバグである可能性があります。

1
JOTN

Solaris自体によって課される可能性のある開いているファイルの数には別の制限があります。たとえば、Solarisの32ビットバイナリで256個のファイル記述子の制限を回避する方法については 記事 があります。

PHPバイナリが32ビットか64ビットかを調べてみてください。

0
automatthias