Выход HHVM после "Слишком много открытых файлов"

У меня есть небольшая проблема относительно HHVM. Итак, я установил HHVM на моем компьютере (Ubuntu 14.04) и он работает без проблем.

Теперь я сделал несколько тестов производительности и сделал тест на Apache Bench. Чтобы получить максимальную нагрузку, я протестировал следующие настройки:

ab -n 2000 -c 10 http://example.com/

После запуска стенда все ядра процессора уходят на 100%, и тестирование выполняется. Через несколько секунд он убивает все процессы HHVM и выходит из строя, и я получаю следующие сообщения в журнале HHVM:

\nWarning: Too many open files in /var/www/xxx/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php on line 736
Finished singleJitRequest 1
Finished singleJitRequest 2
Finished singleJitRequest 3
Finished singleJitRequest 4
Finished singleJitRequest 5
\nWarning: Too many open files in /var/www/xxx/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php on line 736
\nFatal error: Class undefined: Doctrine\\DBAL\\Driver\\PDOException in /var/www/xxx/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php on line 47
\nWarning: Too many open files in /var/www/xxx/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php on line 736

Так что он работает в лимите открытых файлов, и я не знаю почему. Это обычная установка HHVM + Nginx с настройками по умолчанию.

Кто-нибудь знает, как решить эту проблему или имел ту же проблему раньше?

Изменить: я использую порт 9000, а не сокет Unix.

1 ответ

Решение

Какой максимальный лимит установлен для дескриптора файла?

Это, вероятно, слишком низко, возможно, 1024?

Получите PID вашего запущенного процесса HHVM и проверьте с помощью:

grep "open files" /proc/$pid/limits

Чтобы настроить это, вы устанавливаете свои ограничения в /etc/security/limits.conf .

У вас также есть ограничение на количество файловых дескрипторов в ядре, расположенное в sysctl fs.file-max, но сейчас я не буду об этом беспокоиться, это не повлияет на это.

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