之前改为GatewayWorker 跑了一段时间,都正常,最近几天,每一次到高峰期,长链接请求和推送就挂了,等过了一段时间峰值下降,一切又正常了。一出问题,只能重启服务,初始化数据又变得正常了。
这边现在时 PHP + redis(放阿里云) + GatewayWorker。
这边按照文档在centos系统做了Linux内核优化,情况还是存在,我们这边高峰连接数也不会超过2000.
GatewayWorker 里面主要就是对用户分组推消息,以及根据请求带过来的token获取用户信息,并保存在session里面.
问答这边没找到 如果PHP内存分配只有128M,遇到这种情况有可能会导致到了某一峰值,长链接就连不上了嘛?
有可能是没装event扩展导致的。另外如果使用了nginx代理,记得把nginx连接数调大。
php.ini里memory_limit的内存限制针对的是单个进程的限制,不是限制所有进程总内存。
另外阿里云redis需要定时发心跳,心跳间隔小于60秒。否则可能会有redis超时。在Enents::onWorkerStart里建立redis连接,并设置一个定时器,每55秒ping()一次。如果有用阿里云数据库,也是一样操作。