埠狀態型別說明:
狀態:描述
closed:無連線是活動的或正在進行
listen:伺服器在等待進入呼叫
syn_recv:乙個連線請求已經到達,等待確認
syn_sent:應用已經開始,開啟乙個連線
established:正常資料傳輸狀態
fin_wait1:應用說它已經完成
fin_wait2:另一邊已同意釋放
itmed_wait:等待所有分組死掉
closing:兩邊同時嘗試關閉
time_wait:另一邊已初始化乙個釋放
last_ack:等待所有分組死掉
檢視埠time_wait數量:
[root@aaa1 ~]# netstat -ano | grep time_wait | wc -l
檢查net.ipv4.tcp_tw當前值:
[root@aaa1 ~]# sysctl -a|grep net.ipv4.tcp_tw
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
增加或修改net.ipv4.tcp_tw值:
[root@aaa1 ~]#vim /etc/sysctl.conf
#表示開啟重用。允許將time-wait sockets重新用於新的tcp連線,預設為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1
#表示開啟tcp連線中time-wait sockets的快速**,預設為0,表示關閉。
net.ipv4.tcp_tw_recycle = 1
使核心引數生效:
[root@aaa1 ~]#sysctl -p
檢查一下time和wait的值:
#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
sysctl 引數說明:
net.ipv4.tcp_syncookies = 1
#表示開啟syn cookies。當出現syn等待佇列溢位時,啟用cookies來處理,可防範少量syn攻擊,預設為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1
#表示開啟重用。允許將time-wait sockets重新用於新的tcp連線,預設為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1
#表示開啟tcp連線中time-wait sockets的快速**,預設為0,表示關閉。
net.ipv4.tcp_fin_timeout = 30
#表示如果套接字由本端要求關閉,這個引數決定了它保持在fin-wait-2狀態的時間。
net.ipv4.tcp_keepalive_time = 1200
#表示當keepalive起用的時候,tcp傳送keepalive訊息的頻度。預設是2小時,改為20分鐘。
net.ipv4.ip_local_port_range = 1024
65000
#表示用於向外連線的埠範圍。預設情況下很小:32768到61000,改為1024到65000。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系統同時保持time_wait套接字的最大數量,如果超過這個數字,
#time_wait套接字將立刻被清除並列印警告資訊。預設為180000,改為5000。
#對於apache、nginx等伺服器,上幾行的引數可以很好地減少time_wait套接字數量,
#但是對於squid,效果卻不大。此項引數可以控制time_wait套接字的最大數量,避免squid伺服器被大量的time_wait套接字拖死
減少Linux伺服器TIME WAIT過多問題
time wait狀態的意義 客戶端與伺服器端建立tcp ip連線後關閉socket後,伺服器端連線的埠 狀態為time wait 是不是所有執行主動關閉的socket都會進入time wait狀態呢?有沒有什麼情況使主動關閉的socket直接進入closed狀態呢?主動關閉的一方在傳送最後乙個 a...
減少linux伺服器大量TIME WAIT
將專案部署到linux上後,發現系統有大量的time wait狀態的鏈結,大量time wait狀態的鏈結不能被及時 導致的結果就是系統可用socket被耗盡而無法處理新的請求。對於http協議的短連線請求,應該要防止產生大量的time wait,我們可以通過設定linux網路引數來達到目的,步驟如...
如何減少Linux伺服器TIME WAIT過多
time wait狀態的意義 客戶端與伺服器端建立tcp ip連線後關閉socket後,伺服器端連線的埠狀態為time wait 是不是所有執行主動關閉的socket都會進入time wait狀態呢?有沒有什麼情況使主動關閉的socket直接進入closed狀態呢?主動關閉的一方在傳送最後乙個 ac...