我有一个关于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中的内核范围的文件描述符限制,但现在我不担心这个限制,它不会对此产生影响。