Warning: system call select exceeded the maximum number of connections 256

dreamgirlfan

项目部署环境:
GatewayWorker + register 部署在Linux系统下,以支持10w+用户连接
BusinessWorker 部署在windows下,因为项目部署在windows系统中
项目运行一直正常,部分业务运行时间太长,所以利用workerman异步多进程功能,php项目作为客户端,连接上GatewayWorker后,发送消息通知Gateway执行异步任务,然后就经常提示这个超过最大连接数256,现在是不清楚是异步进程导致的吗?为什么呢

3756 2 0
2个回答

six

感觉是异步任务建立异步连接导致的。

如果BusinessWorker不需要得到异步任务结果,workerman一端在收到异步任务可以先执行关闭连接,然后再执行异步任务,这样能让连接尽快断开,而不是等到异步任务完成后才断开,感觉能减少连接数。

workerman在win下无法设置count从而设置多进程吧,BusinessWorker服务器为什么不使用linux系统呢?如果使用linux系统,就不会有win的256个连接限制了啊

  • dreamgirlfan 2020-04-13

    就是目前公司所有项目都是部署在windows系统下,本来一开始就是用windwos版,但是最多只能支持256个长链接,这是不现实的,所以就把gatewayworker 采用分离式部署,部署在Linux下,这样就能保证至少10w+的客户连接没有问题。BusinessWorker只能部署在项目运行环境中,所以在window下

  • dreamgirlfan 2020-04-13

    现在我不明白,提示超过最大连接256是指谁超过了,如果是客户端,那也不可能,客户端只会发一次通知,告诉wokerman执行异步任务啊,倒是workerman收到通知后,会for循环,去建立异步进程,执行每个需要执行的任务。如果是异步进程导致,那该怎么办呢

  • six 2020-04-13

    执行异步任务的workerman也在win下?

dreamgirlfan

该问题已解决,谢谢回复。

  • 小神龙 2020-09-03

    是怎么解决的呢?遇到同样的报错,整个gatewayworker没有作分布式,在一台windows服务器上部署的。

  • ys19951226 2021-03-09

    兄弟怎么解决的

  • 741258dd 2021-05-16

    你好,请问这个问题怎么解决的呢?

年代过于久远,无法发表回答
🔝