我已经设置了一个PHP websocket服务器(Ratchet)并使用NGINX作为反向代理,以避免用户连接到不同的端口。一切都很顺利,直到我得到一个小于1024(准确到1020)的连接。然后拒绝每个其他连接(超时)。它看起来像1024个文件描述符的上限,但我无法弄清楚是什么。
NGINX的proxy_error_log表示"上游超时(110:连接超时),同时从上游读取响应头,客户端: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,还是完全不同的东西。
答案 0 :(得分:0)
事实证明我只是个假人。根据{{3}} --enable-fd-setsize不能正常工作。
即使我更改了系统头文件常量(在原始问题中链接的棘轮问题中提到),我已经重新编译而没有运行' make clean'所以我想我还在编译使用旧(下限)值。
我无法在我的php配置中找到与此相关的任何内容。但是在更改了头文件中的常量并再次编译后,我能够超过1024最大值。