tcp 埠的time_wait 問題
最近發現幾個監控用的指令碼在連線監控資料庫的時候偶爾會連不上,報錯:
Couldn't connect to host:3306/tcp: IO::Socket::INET: connect: Cannot assign requested address
檢視了一下發現系統中存在大量處於TIME_WAIT狀態的tcp埠
$netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 50013
ESTABLISHED 27
SYN_RECV 1
由於要監控的主機太多,監控的agent可能在短時間內建立大量連線到監控資料庫(MySQL)並釋放造成的。在網上查閱了一些tcp引數的相關資料,最後透過修改了幾個系統核心的tcp引數緩解了該問題:
#vi /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
#sysctl -p
其中:
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連線,預設為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連線中TIME-WAIT sockets的快速回收,預設為0,表示關閉。
修改完成並生效後,系統中處於TIME_WAIT狀態的tcp埠數量迅速下降到100左右:
$netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 82
ESTABLISHED 36
簡單記錄於此,備忘。
Couldn't connect to host:3306/tcp: IO::Socket::INET: connect: Cannot assign requested address
檢視了一下發現系統中存在大量處於TIME_WAIT狀態的tcp埠
$netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 50013
ESTABLISHED 27
SYN_RECV 1
由於要監控的主機太多,監控的agent可能在短時間內建立大量連線到監控資料庫(MySQL)並釋放造成的。在網上查閱了一些tcp引數的相關資料,最後透過修改了幾個系統核心的tcp引數緩解了該問題:
#vi /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
#sysctl -p
其中:
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連線,預設為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連線中TIME-WAIT sockets的快速回收,預設為0,表示關閉。
修改完成並生效後,系統中處於TIME_WAIT狀態的tcp埠數量迅速下降到100左右:
$netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 82
ESTABLISHED 36
簡單記錄於此,備忘。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-731992/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux上大量tcp埠處於TIME_WAIT的問題LinuxTCPAI
- TCP/UDP的埠Dynamic Port Range問題TCPUDP
- TCP埠狀態說明ESTABLISHED、TIME_WAIT、 CLOSE_WAITTCPAI
- 解決TIME_WAIT的問題AI
- TCP連線時動態埠的相關問題說明TCP
- (轉)*Socket TIME_WAIT 問題Q&AAI
- TCP連線狀態和time_waitTCPAI
- TCP TIME_WAIT狀態最佳化TCPAI
- 多listener 埠的問題
- TCP漫談之keepalive和time_waitTCPAI
- 理解 TCP(一):埠TCP
- 網路基礎問題整理:為什麼TCP四次揮手最後需要TIME_WAIT狀態?TCPAI
- Vue的api埠號問題VueAPI
- 就是要你懂TCP–最經典的TCP效能問題TCP
- TCPUDP 共用埠問題TCPUDP
- LINUX下解決TIME_WAIT過多問題LinuxAI
- TCP/IP埠號大全TCP
- oracle 8080埠的問題,急!!!Oracle
- Go TCP 粘包問題GoTCP
- 解決Tengine健康檢查引起的TIME_WAIT堆積問題AI
- 聊聊docker那些埠問題Docker
- 初學串列埠問題串列埠
- tomcat埠占用問題Tomcat
- TCP/IP 協議相關的問題TCP協議
- TCP粘包拆包問題TCP
- TCP常見問題總結TCP
- 為什麼tcp的TIME_WAIT狀態要維持2MSLTCPAI
- TCP連線的TIME_WAIT和CLOSE_WAIT 狀態解說TCPAI
- --------監視你的 TCP/IP埠!!!(vb)----------- (轉)TCP
- windows解決埠占用問題Windows
- 5900 VNC 預設埠問題VNC
- Nginx透過域名代理tcp埠NginxTCP
- Nginx通過域名代理tcp埠NginxTCP
- [20230317]關於TIME_WAIT問題.txtAI
- tcp 實現簡單http 問題TCPHTTP
- Docker 埠對映問題解決Docker
- 在 TIME_WAIT 狀態的 TCP 連線,收到 SYN 後會發生什麼?AITCP
- ubuntu下解決埠被佔用的問題Ubuntu