gpt4 book ai didi

php - PHP Websockets服务器在256个用户后停止接受连接

转载 作者:行者123 更新时间:2023-12-03 12:03:58 26 4
gpt4 key购买 nike

我在带有PHP7的Ubuntu 16机器上使用https://github.com/ghedipunk/PHP-Websockets/blob/master/websockets.php运行websockets服务器

在256个用户连接到websocket之后,它停止建立连接,我不知道为什么。在客户端中,我得到一个1006错误代码(浏览器实现异常(本地)关闭了连接),没有进一步的信息。 websockets请求似乎没有到达websockets服务器(通常在建立套接字连接后立即回显“Client Connected”)。

在connect()函数中,我要做的一件事情是向日志回显用户数量,套接字和总内存使用量的计数。每当用户计数达到256(此时套接字计数为257,内存使用量约为4Mb)时,就会发生此问题。它发生在256的事实使我认为某个地方正在达到极限,但是我找不到那个极限。如果我重新启动websockets服务器,一切都会再次正常。

从到目前为止的调查来看,我已经尝试并检查了以下内容:

  • ulimit(说是无限的)
  • MySQL连接限制(已设置为默认值,现在为1000,但这没有帮助)
  • 增加了PHP内存限制(因为为什么不这样做,只是为了看看)
  • SOMAXCONN设置为128,所以我不认为这是问题所在,但我必须重新编译PHP才能对其进行测试。我还没有尝试过。
  • Apache:发生问题时收到的消息是:[proxy:error] [pid 16785] (111)Connection refused: AH00957: WS: attempt to connect to 10.0.0.240:9000 (websockets.mydomain.com) failed,它告诉我的不多。 Apache正在运行MPM prefork,我增加了备用服务器和MaxRequestWorkers

  • 我愿意接受关于下一个地方或如何从apache的“拒绝连接”错误日志中获取更多详细信息的任何建议!

    谢谢

    最佳答案

    是Apache助您一臂之力。尝试在conf文件中设置以下内容...

    MaxClients 512
    ServerLimit 512

    (您必须同时设置两者)
    当然,您可以使用任何适合您的数字。在mpm-prefork中,您应该可以达到20,000,但这实际上不是必须的。

    关于php - PHP Websockets服务器在256个用户后停止接受连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854715/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com