最近维护的业务量与日俱增,服务器不断出现各种问题。今天遇到了在开启 MySQL pconnect 情况下 TCP CLOSE_WAIT 连接状态激增的情况。CLOSE_WAIT 高达 8000 左右。
先来看看 TCP 协议是如何关闭一个连接的:
STEP 1: Client –FIN–> Server
STEP 2: Client <--ACK--
转载
精选
2011-11-07 16:15:02
2270阅读
注意:在一个连接没有进入CLOSED状态之前,这个连接是不能被重用的!TIME-WAIT:连接一端主动关闭并发送完最后一个 ACK 之后所处的状态这个状态一般会存在 2MSL(Max Segment Lifttime,即一个包在传输过程中的最大生存时间) 时间(所以又叫 2MSL 状态),之所以要有这个状态,是为了让前一个连接的包不影响后面的链接,并且可以被有效的应答,以保证 TCP 连接的可靠性
转载
2024-03-07 13:35:06
95阅读
TCP状态转移要点
TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源
客户端TCP状态迁移:
CLOSED->SYN_SENT->ESTABLISHED->FIN_
转载
精选
2011-10-14 21:33:44
840阅读
CLOSE-WAIT形成的原因:客服端client端主动断掉连接,那么双方关闭这个TCP连接共需要四个packet client --》 FIN --》 server sever --》 ACK --》 client 这个时候client端处于FIN_WAIT状态,而server端程序处于CLOSE_WAIT状态。 cli
转载
精选
2015-07-15 20:16:30
1106阅读
TIME_WAIT状态可以通过优化服务器参数得到解决,因为发生TIME_WAIT的情况是服务器自己可控的,要么就是对方连接的异常,要么就是自己没有迅速回收资源,总之不是由于自己程序错误导致的。如果一直保持在CLOSE_WAIT状态,那么只有一种情况,就是在对方关闭连接之后服务器程序自己没有进一步发出ack信号。换句话说,就是在对方连接关闭之后,程序里没有检测到,或者程序压根就忘记了这个时候需要关闭
原创
2018-01-22 12:08:27
2222阅读
点赞
https://www.cnblogs.com/sunxucool/p/3449068.htmlhttps://www.cnblogs.com/luckcs/articles/6396782.html
转载
2018-08-31 13:57:50
551阅读
转自大神(致敬):https://blog.csdn.net/shootyou/article/details/6622226 昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.csdn.net/shootyou/article/details/6615051。里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态
转载
2018-08-24 17:11:29
5385阅读
转载:://huoding./2013/12/31/316 ://blog..net/lxnkobe/article/details/7525317 ://kerry.blog.51cto./172631/105233/ 讨论前大家可以拿手头的服务器摸摸底
转载
2017-02-11 17:30:00
205阅读
2评论
【代码】TCP netstat TIME_WAIT & CLOSE_WAIT。
系统上线之后,通过如下语句查看服务器时,发现有不少TIME_WAIT和CLOSE_WAIT。 1 TIME_WAIT 297ESTABLISHED 53CLOSE_WAIT 5 解释TIME_WAIT:表示主动关闭,通过优化系统内核参数可容易解决。CLOSE_WAIT:表示被动关闭,需要从程序本身出
转载
2019-10-24 17:49:00
263阅读
修改Time_Wait和CLOSE_WAIT时间
修改Time_Wait参数的方法 (在服务端修改)Windows下在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters,添加名为TcpTimedWaitDelay的DWORD键,设置为30,以缩短TIME_WAIT的等待时间
解决CLOSE_WAIT的方法:(在
转载
2021-08-23 13:46:11
510阅读
之前自己学习的网络都是浅尝辄止,最近被人反复问起 TCP 相关的挥手问题的相关问题,有必要整理下自身所学,以提供自己和别人查阅。下图是 TCP 挥手的一个完整流程,这里引用了 tcpipguide 的流程图,更加直观的了解下挥手过程。首先不要被这里的图给迷惑了,因为连接的主动断开是可以发生在客户端,也同样可以发生在服务端。FIN_WAIT1由图可知,当一方接受到来自应用断开连接的信号时候,就发送
转载
2019-03-11 10:31:51
2782阅读
作者:linux大本营 CLOSE_WAIT 和 TIME_WAIT 是如何产生的?大量的 CLOSE_WAIT 和 TIME_WAIT 又有何隐患?本文将通过实践角度来带你揭开 CL ...
转载
2021-07-18 19:55:00
469阅读
2评论
1 出现的场景客户端在TCP建立连接对外提供服务的过程中,每个链接会占用一个本地端口,如在高并发的情况下,TIME_WAIT状态过多,势必会占用大量的端口,端口又有限,以致于耗尽端口,所以会出现偶尔链接的上,偶尔断开的情况这么多的TIME_WAIT哪里来的呢?先复习下四次挥手 四次挥手
[FIN_WAIT1] :FIN_WAIT1和FIN_WAIT2均为等待对方的FIN报文。
修改Time_Wait参数的方法 (在服务端修改)Windows下在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters,添加名为TcpTimedWaitDelay的DWORD键,设置为30,以缩短TIME_WAI
转载
2019-01-25 18:11:00
983阅读
2评论
在Linux的日常维护过程中,会经常用到下面的命令:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 它会显示例如下面的信息:除了ESTABLISHED,可以看到连接数比较多的几个状
转载
精选
2015-02-06 10:13:46
4326阅读
原创
2023-11-07 11:28:37
176阅读
转载自:http://blog.csdn.net/shootyou/article/details/6622226 昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.csdn.net/shootyou/article/details/6615051里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态。在服务器的日
转载
精选
2016-10-28 20:55:12
504阅读
1  CLOSE_WAIT状态的生成原因[转] CLOSE_WAIT状态的生成原因 首先我们知道,如果我们的Client程序处于CLOSE_WAIT状态的话,说明套接字是被动关闭的! 因为如果是Server端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet:        Server&
转载
精选
2011-09-18 22:02:22
1079阅读
TCP状态 时序图 ACK TCP数据包中的序列号(Sequence Number)不是以报文段来进行编号的,而是将连接生存周期内传输的所有数据当作一个字节流,序列号就是整个字节流中每个字节的编号 一个TCP数据包中包含多个字节流的数据(即数据段),而且每个TCP数据包中的数据大小不一定相同 在建立
转载
2021-02-25 13:37:00
265阅读
2评论