netstat的Recv-Q

最近在使用Jprofiler分析问题时发现,电脑和服务器连着时,突然断开网络或者是网络不稳定断开时,再重新连接,会连不上,查看连接状态。
在这里插入图片描述
客户端电脑的63131已经不在的,但是服务端的还在!!因为没收到关闭连接的报文FIN/RST。
Recv-Q不为0,LISTEN状态下Recv-Q是没accept的连接数,ESTABLISHED状态下Recv-Q是没被读取的字节数。
奇怪的是服务端又不超时关闭、又没处理下一个连接,后面新建的连接都在队列里了。只能说只服务端写的有问题。

尝试用tcpkill强行关闭连接,还关不了,因为tcpkill原理是获取连接的序列号,再发送RST重置连接,现在问题是这连接上面就没有报文传输,所以搞不到序列号,也没法重置,后面用gdb解决了。在此记录一下。

另外可以考虑tcp的keepalive相关的选项(或者说配置),在这个问题中的服务端我没找到有keepalive相关的配置,抓包也没有keepalive报文。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值