之前连接量出现过6000-7000,我通过更改php.ini 的memory_limit 从 128m 改为 521m 解决了连接阻塞的问题。
但是现在连接量又升了一个等级,ESTABLISHED状态下的连接成功的数量就有 9k-1w,导致现在连接阻塞,部分客户端连接失败。
phpsocket.io 是单进程的,不知道该从哪方面入手让连接不阻塞。。。求老师指点!
ps:
1、已优化过Linux内核以及最大连接量。
2、已安装event扩展。
3、已将php.ini 的memory_limit 从 521m 改为 1024m。
4、服务器具体配置不知道,运维负责,但是不会差。
phpsocket.io 且是单进程的,只能利用一个cpu,并且内部机制比较复杂,1w在线估计已经占满一个cpu了,很难再优化了。
那能不能通过别的方式来提升这个连接量呢,比如和原生Workman结合起来,比如建两个相同的服务(两个连接地址)之间进行通讯等等?
参考这里开启多个实例试下。
https://github.com/walkor/phpsocket.io/issues/77
老大,您发我的这个亲测可行,已经上线运行了,已经分担了单进程单实例的一些压力。我在问一个这个问题之外的,我能在增加一个服务吗,比如我用gatewayworker开启一个ws服务,ws服务能否和phpsocket.io之间进行通讯?
可以,用 channel 组件
gatewayWorker里在 Events的onWorkerStart里建立channel连接。
phpsocket.io 在
$io->on('workerStart', function()use($io) {}
里建立channel连接。但是我用socket.io 推送消息是$io->to()->emit,我用gatewayworker推送消息是Gateway::sendToClient,他们方法不同,一个需要clientid 一个需要socket->id 中间推送消息怎么办?
这个要自己想办法