一个诡异的问题---不定期重启才能解决

强强

请教各位达人,基于centos 7 ,GatewayWorker框架写了个小程序,8282端口,ws协议。

平均个把月一次 ,ws无法链接。重启php stop start 后解决,第三次了,重启时80端口是可以访问的。
防火墙没开。

2636 14 0
14个回答

walkor

无法连接的客户端错误截图发下。
另外出现问题后php start.php status 截图发下。
还有发生错误后workerman.log 里的日志发下。
发生错误后命令行运行top命令截图发下。

  • 暂无评论
强强

好的,在发生问题时,我会来贴图。
谢谢walkor及时回复。

  • 暂无评论
az_qiang

昨天重现的。
server到client走的是运营商vpn网络。
抓狂中。。。

  • 暂无评论
az_qiang
  • 暂无评论
walkor

看到mysql cpu 100%了,另外Worker进程阻塞住了,有可能是业务执行了耗时的SQL导致的。

要想定位出问题需要截图下
客户端无法连接的报错截图。
还有workerman.log里连接不上那个时间点的日志。

  • 暂无评论
az_qiang

感谢woalkor的及时回复:
1.客户端无法链接的截图,没有保存;

workerman.log没有发现出错日志;

解决阻塞的问题,单纯加大worker数量 是否可以解决?
另外,阻塞是在哪里看到的?
请walkor不吝赐教。

  • walkor 2017-10-18

    status 里能看到
    AzCTIWorker不见了,就是因为阻塞住了。

az_qiang

另外,程序本身没有复杂的查询,只有几条简单的select语句。

  • 暂无评论
walkor

检查下慢sql吧。不是框架的问题

  • 暂无评论
az_qiang

再次感谢

  • 暂无评论
az_qiang

walkor,请教:
如果在很短时间内无法找到卡死或则慢的原因,
我能否在此进程中,执行一个定时器发送心跳,在另外一个进程内接收消息,如果N秒内没收到消息,则认为该进程卡死,则kill进程。临时解决办法。

  • 暂无评论
walkor

可以这么做

  • 暂无评论
az_qiang

又来了。。。。

请教,walkor 这个是网络阻塞吗?

  • 暂无评论
walkor

对,业务代码一直卡在读fd=44的描述符上

可以利用命令

lsof -nPp 进程pid

查看fd=44的fd是什么,有可能是redis mysql curl等资源

  • 暂无评论
az_qiang

好的,谢谢

  • 暂无评论
年代过于久远,无法发表回答
🔝