HHVM 在出现“打开文件过多”后退出

HHVM 在出现“打开文件过多”后退出

我对 HHVM 有点小问题。因此,我在我的机器(Ubuntu 14.04)上安装了 HHVM,它运行正常。

现在我已经进行了一些性能测试,并使用 apache bench 进行了测试。为了获得最大负载,我测试了以下设置:

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

启动工作台后,所有 CPU 核心都达到 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?

获取正在运行的 HHVM 进程的 PID,然后检查:

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

要调整这一点,您可以在 /etc/security/limits.conf 中设置限制。

您还具有位于 sysctl fs.file-max 中的内核范围文件描述符限制,但我现在不必担心这一点,它不会对此产生影响。

相关内容