woker进程busy,gateway进程内存和cpu占用极高

chaogel

项目是车辆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状态

或者有其他问题,该如何判定解决

阅读 519
1个回答

six

pass_808 8282 端口的gateway有问题吧,按道理来说gateway里默认没有阻塞操作,不会有busy的情况。
gateway cpu很高,是不是在8282的geteway进程里做了啥死循环的操作?strace下 8282 busy的gateway进程看下呢

  • chaogel 2021-03-24

    确实,打开文件数超过系统限制