У меня небольшая проблема с 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.
Какое максимальное количество дескрипторов открытого файла установлено?
Наверное, слишком мало, может, 1024?
Получите PID вашего запущенного процесса HHVM и проверьте:
grep "open files" /proc/$pid/limits
Чтобы отрегулировать это, вы устанавливаете свои ограничения в /etc/security/limits.conf.
У вас также есть ограничение файлового дескриптора для всего ядра, расположенное в sysctl fs.file-max, но я бы не стал беспокоиться об этом сейчас, это не повлияет на это.