项目是车辆GPS对接,通过JT808协议,两种对接方式
1.平台转发(TwxGateway)
客户端少,大概10几个,每个客户端转发大量数据,正常情况下最多的大概每秒100-200组数据
2.设备直传(pass_808)
一万多客户端,每个客户端大概30S一组数据
如下图,会出现转发的gateway大量占用内存,top之后cpu基本上100%
所有worker进程busy,top发现cpu基本没有占用
通过strace -ttp 分析
卡在recvfrom(59,
kill -SIGALRM之后,依旧会卡在该处
lsof -nPp 分析后,发现是在接收本地数据
worker进程已经分布式部署,依旧会时常卡死,是否考虑为单个gateway数据传输过大,导致gateway进程cpu占满,以至于worker进程一直卡在从gateway取数据,处于busy状态
或者有其他问题,该如何判定解决
pass_808 8282 端口的gateway有问题吧,按道理来说gateway里默认没有阻塞操作,不会有busy的情况。
gateway cpu很高,是不是在8282的geteway进程里做了啥死循环的操作?strace下 8282 busy的gateway进程看下呢
确实,打开文件数超过系统限制