Выход 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, но сейчас я не буду об этом беспокоиться, это не повлияет на это.