HHVM退出“打开的文件过多”

我有一个关于HHVM的小问题。 所以我已经在我的mashine(Ubuntu 14.04)上安装了HHVM,并且没有任何问题。

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

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

所有的CPU核心启动后,100%的工作台上运行。 几秒钟后,它将杀死所有的HHVM进程并将其closures,并在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,而不是一个Unixsockets。

什么是您的最大打开文件描述符限制设置为?

这可能太低了,也许是1024?

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

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

为了调整这个,你可以在/etc/security/limits.conf中设置你的限制。

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