开发者社区> 问答> 正文

server跑久了Recv queue不断增大如何定位??报错

server采用tcp协议,一直没有报错,cpu及内存负载也没有大的变化,但是在跑了一段时间后,recv queue开始不断变大,导致部分socket连接失效,这种问题通常有哪些情况?

如下:

tcp     7528      0 192.168.206.131:37919       100.54.38.37:1234          ESTABLISHED off (0.00/0/0)
tcp     7422      0 192.168.206.131:33962       100.54.38.39:1234           ESTABLISHED off (0.00/0/0)
tcp     7846      0 192.168.206.131:50650       100.54.38.38:1234           ESTABLISHED off (0.00/0/0)


展开
收起
爱吃鱼的程序员 2020-06-12 15:25:39 888 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    recvqueue是什么?就是通过nestat观察的receivequeue<spanstyle="font-family:微软雅黑,Verdana,sans-serif,微软雅黑;font-size:14px;line-height:22px;background-color:#FFFFFF;">ESTABLISHEDoff,很有可能是一个半关闭状态,就是服务端关闭了连接,但是客户端还没响应确认关闭这个操作,但是服务端认为我关闭你了,我不处理你数据了,于是这个recvqueue就停在这里了,可以设置socket的<spanstyle="color:#333333;font-family:Arial;font-size:14px;line-height:26px;background-color:#FFFFFF;">SO_LINGER参数,让socket关闭的时候立即关闭底层socket首先,这三个连接确认从来没有关闭过,如果是半连接,也肯定是异常造成的,异常造成半连接应该可能性比较小,另外,如果是半连接,意味着这条连接是不可写只可读的,而现有的情况是server不会主动往此连接发送消息,但是队列开始在不断变大

    2020-06-12 15:25:57
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载