admin 管理员组文章数量: 887007
一个web服务 端口被塞满的状态
背景:算法起了多个端口,对外提供服务,改了代码后发现,端口telnet不通,查看端口情况:
Recv队列,被挤满了,没办法再访问该端口了。
并且一看端口的情况,一大堆CLOSE_WAIT。
上网排查问题:
对以上两个现象的解释为:
1、Recv_Q / Send_Q
2、CLOSE_WAIT 解析
近测试环境server由于需要与大量的后台server交互,今天突然发现有大量的close_wait产生,于是仔细研究了一下:
如果我们的服务器程序处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!
因为如果是CLIENT端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet:
1.Client -> FIN -> Server
2.Client <- ACK <- Server 这时候Client端处于FIN_WAIT_2状态;而Server 程序处于CLOSE_WAIT状态。
3.Client <- FIN <- Server 这时Server 发送FIN给Client,Server 就置为LAST_ACK状态。
4.Client -> ACK -> Server Client回应了ACK,那么Server 的套接字才会真正置为CLOSED状态。
Server 程序处于CLOSE_WAIT状态,而不是LAST_ACK状态,说明还没有发FIN给Client,那么可能是在关闭连接之前还有许多数据要发送或者其他事要做,
导致没有发这个FIN packet。
本文标签: 一个web服务端口被塞满的状态
版权声明:本文标题:一个web服务端口被塞满的状态 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732356684h1534632.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论