文件限制与PHP WebSocket服务器和NGINX反向代理



我已经设置了一个PHP websocket服务器(棘轮),并使用NGINX作为反向代理,以避免用户连接到不同的端口。一切都很顺利,直到我得到的连接数略少于1024(准确地说是1020)。然后拒绝所有其他连接(超时)。文件描述符的上限是1024,但我不知道是什么。

NGINX的proxy_error_log显示"upstream timed out (110: Connection timed out), while read response header from upstream, client: my_ip, server: "domain_name",请求:"GET/socket_server_path/HTTP/1.1",上游:"http://127.0.0.1:8080/socket_server_path/",主机:"domain_name_again"

NGINX用户和运行服务器的用户都在/etc/security/limits.conf中设置了一个好的文件限制(大于1024)。从我可以看出,进程在/proc/pid #/limit中设置了一个高限制。

https://github.com/ratchetphp/Ratchet/issues/300描述了我想象中正在发生的事情,但我没有看到在我的应用程序中打印错误。我继续用——enable-fd-setsize=10000编译PHP,但这仍然不能让更多的连接发生。

我怎样才能得到更多的细节,并了解到底发生了什么?现在我要讲的是NGINX超时了。但我不知道是否PHP无法打开更多的套接字,或者如果它是NGINX,或完全不同的东西。

原来我只是个傻瓜。根据https://bugs.php.net/bug.php?id=69637——enable-fd-setsize不能正常工作

即使我改变了系统头文件常量(在棘轮问题链接在我原来的问题中提到),我已经重新编译没有运行'make clean',所以我想我仍然在编译旧的(低限制)值。

我无法在我的php配置中找到与此相关的任何内容。但是在更改头文件中的常量并再次编译之后,我能够超过1024个最大值。

相关内容

  • 没有找到相关文章