linux下 Time wait過多問題解決

2021-06-26 04:43:56 字數 1358 閱讀 2154

通過 

netstat  -anp | grep time_wait | wc -l 

命令檢視數量,發現time_wait的連線數量超過了18000太誇張了。

1、初步懷疑是程式沒有關閉連線,codereview了兩遍,發現,已經正常關閉。

2、網上看time_wait產生的原因,可能是因為伺服器主動關閉連線導致time_wait產生。

3、查詢time_wait解決方案:

發現系統存在大量time_wait狀態的連線,通過調整核心引數解決,

vi /etc/sysctl.conf

編輯檔案,加入以下內容:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

然後執行/sbin/sysctl -p 讓引數生效。

經過配置後,暫時的問題是解決了,再檢視time_wait數量快速下降。

關鍵命令:

1、netstat -n | awk '/^tcp/ end '

會得到類似下面的結果,具體數字會有所不同:

last_ack 1

syn_recv 14

established 79

fin_wait1 28

fin_wait2 3

closing 5

time_wait 1669

狀態:描述

closed:無連線是活動的或正在進行

listen:伺服器在等待進入呼叫

syn_recv:乙個連線請求已經到達,等待確認

syn_sent:應用已經開始,開啟乙個連線

established:正常資料傳輸狀態

fin_wait1:應用說它已經完成

fin_wait2:另一邊已同意釋放

itmed_wait:等待所有分組死掉

closing:兩邊同時嘗試關閉

time_wait:另一邊已初始化乙個釋放

last_ack:等待所有分組死掉

2、sysctl -a | grep time | grep wait

net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

linux下如何釋放TIME WAIT

今天服務 明顯過慢查年了一下伺服器聯接數,糾結於怎麼搞定time wait netstat an awk tcp sort uniq c 68 close wait 2 closing 136 established 38 fin wait1 16 fin wait2 2 last ack 8 li...

linux下解決大量的TIME WAIT

root web02 vi etc sysctl.conf 新增如下內容 net.ipv4.tcp tw reuse 1 net.ipv4.tcp tw recycle 1 net.ipv4.tcp syncookies 1 使核心引數生效 root web02 sysctl p readme ne...

linux 下大量TIME WAIT 的處理

原文 linux 下大量time wait 的處理 linux下高併發的squid伺服器,tcp time wait套接字數量經常達到兩 三萬,伺服器很容易被拖死。通過修改linux核心引數,可以減少伺服器的ime wait套接字數量。vim etc sysctl.conf 增加以下幾行 net.i...