求助, nodeJs 进程无响应了,应该怎么查

讨论 未结 3 52
des
des 会员 2022年8月7日 12:26 发表
<p>最近在对服务做测试,然后就发现 websocket 连接保持不动的话,过一阵 node 进程就无响应了<br> 表现就是请求端口无响应,LISTEN 的 Recv-Q 不掉<br> 然后在代码里面加入的 setInterval 然后打印也突然不输出了,看样子像是事件循环卡住了 </p> <pre><code>[root /]# ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 261 511 :::4000 :::* </code></pre> <p>保持的连接数也不多,才 8 千。也不怎么发送数据,也就半分钟发一条一个字符的 webscoket 数据<br> 连接断开之后,程序也是不继续走,然后就是一堆的 CLOSE_WAIT </p> <p>内存和 CPU 看上去也没啥异样<br> 最最奇葩的一点是,一旦我使用 pstack 或者 strace ,或者用 kill ,进程就恢复正常了<br> 这是堆栈信息: <a href="https://pastebin.com/VJ4ekuQR" rel="nofollow">https://pastebin.com/VJ4ekuQR</a></p> <p>Maximum number of open file descriptors 、nr_open 之类的也看过了,都是 6 万多</p>
收藏(0)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
3个回复
  • des
    des 会员 (楼主)
    2022年8月7日 12:58
    补充一下,测试机和服务器中间是有 ALB 的,走的公网连接,ALB 有定时使用 HEAD 根目录检测存活机制,不知道有没有影响 客户端定时发送的数据也是一直有日志的,服务端能收到,直到服务出问题就没了 从开始连接到服务出问题,出问题的时长基本都在 15 分钟到 30 分钟 unhandledRejection 和 uncaughtException 全程也没有任何东西 NodeJs 的版本是 v16.12.0 ,在
    0 0
  • bigfei
    2022年8月7日 13:28
    CLOSE_WAIT 一堆是多少?看起来是 CLOSE_WAIT 过多的问题,参见:
    0 0
  • des
    des 会员 (楼主)
    2022年8月7日 13:28
    我一开始也以为是 CLOSE_WAIT 的问题,现在看来 CLOSE_WAIT 只是结果 在我测试机断开连接之前,服务器上是没有 CLOSE_WAIT 状态的连接的,服务更像是“卡住了”,就连 setInterval 都没有执行
    0 0