Слишком много открытых файлов

В php-fpm.conf у меня есть:

rlimit_files = 8192

Мой сервер - 1G SmartMachine от Joyent, то есть это Solaris с 1 ГБ памяти.

Моя проблема в том, что при высокой нагрузке я получаю такие ошибки:

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 слишком низким, и если да, то как высоко я должен его установить?

3 ответа

Решение

Я думаю, что моя проблема была / где-то еще и связана с процессами PHP, оставаясь живым. Я как-то исправил это, не дав им остаться в живых навсегда.

Вы уверены, что это на самом деле работает? Вы можете использовать "pfiles" для идентификатора процесса, чтобы увидеть, что он на самом деле открыл. Вы также можете запустить "prctl" для идентификатора процесса и найти значение "process.max-file-descriptor". Будут перечислены основные, привилегированные и системные значения. Предел на процесс является самым низким из тех. Это может быть ошибка утечки дескриптора файла в приложении, если оно действительно имеет много открытых.

Существует еще одно ограничение на количество открытых файлов, которые могут быть установлены самим Solaris. Например, есть статья о том, как обойти ограничение 256 файловых дескрипторов в 32-битных двоичных файлах в Solaris.

Попробуйте выяснить, является ли ваш двоичный файл php 32- или 64-битным.

Другие вопросы по тегам