对于一个小型学校项目,我正在一个可以监控某些游戏服务器的网站上工作。我通过github项目GameQ收到服务器的信息,该项目使用由Autoloader php脚本加载的单独的类文件。现在我有一个大约10.000服务器ips的列表,我试图用GameQ监视,但是当我尝试运行脚本时它给了我以下错误:
警告:require(/httpdocs/game/src/GameQ/Exception/Query.php):无法打开流:第58行/httpdocs/game/src/GameQ/Autoloader.php中打开的文件太多
我已经尝试过1000个ip地址,这个工作正常。但是当我将列表增加到1500时,它会给我错误。似乎某个地方的限制被设置为1024,但无论我尝试过什么,我似乎无法找到哪里。
以下列出了我已经尝试将限制增加到200000的事项:
将此添加到文件/etc/security/limits.conf中:
root soft nofile 200000
root hard nofile 200000
将会话需要pam_limits.so 添加到/etc/pam.d/login
将 ulimit -n 200000 添加到/ etc / sysconfig / httpd
由于我没有更多的选项可以在网上找到,在这里堆栈溢出我变得非常绝望,我将如何解决这个问题,所以我希望有人知道如何解决这个问题或者知道我做错了什么这里。我的服务器在CentOS 7上运行,我使用Plesk进行网站管理。
答案 0 :(得分:0)
可能是您的进程未以root用户身份运行。如果是这种情况,那么您在limits.conf中设置的限制将需要更改域。
您还可以像这样确认您的流程限制:
检查实际的过程限制:
yytext()
然后
# ps -u <userid running your code>
...
答案 1 :(得分:0)
可能与用户ID相关联-意味着您应该将相关的应用程序ID而不是root放入limits.conf。
就我而言,我在/etc/security/limits.conf中又添加了两行,如下所示。
* hard nofile 500000
* soft nofile 500000
更多帮助,请参阅http://qsok.com/x/LIAV