linux 解決TIME WAIT數量過多的問題

2021-07-27 01:44:16 字數 1438 閱讀 9493

1.檢視各狀態的埠數量;指令碼如下:

while true;

do date;

netstat -n | awk '/^tcp/ end 'i;

sleep 2;

done;

or

time=5;

while true;

donetstat -ant |grep 1433| awk '/established|time_wait|listen|close_wait/ end }';

echo -------------------;

sleep $time;

done

2.優化,修改/etc/sysctl.conf檔案如下:

#對於乙個新建連線,核心要傳送多少個 syn 連線請求才決定放棄,不應該大於255,預設值是5,對應於180秒左右時間

net.ipv4.tcp_syn_retries=2

#net.ipv4.tcp_synack_retries=2

#表示當keepalive起用的時候,tcp傳送keepalive訊息的頻度。預設是2小時,改為300秒

net.ipv4.tcp_keepalive_time=1200

net.ipv4.tcp_orphan_retries=3

#表示如果套接字由本端要求關閉,這個引數決定了它保持在fin-wait-2狀態的時間

net.ipv4.tcp_fin_timeout=30

#表示syn佇列的長度,預設為1024,加大佇列長度為8192,可以容納更多等待連線的網路連線數。

net.ipv4.tcp_max_syn_backlog = 4096

#表示開啟syn cookies。當出現syn等待佇列溢位時,啟用cookies來處理,可防範少量syn攻擊,預設為0,表示關閉

net.ipv4.tcp_syncookies = 1

#表示開啟重用。允許將time-wait sockets重新用於新的tcp連線,預設為0,表示關閉

net.ipv4.tcp_tw_reuse = 1

#表示開啟tcp連線中time-wait sockets的快速**,預設為0,表示關閉

net.ipv4.tcp_tw_recycle = 1

#可用埠範圍

net.ipv4.ip_local_port_range = 10000 61000

##減少超時前的探測次數

net.ipv4.tcp_keepalive_probes=5

##優化網路裝置接收佇列

net.core.netdev_max_backlog=3000

修改完成後,執行 /sbin/sysctl -p命令後方才生效;

3.關於配置檔案中每個引數的意義見文件:

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

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解決辦法

發現存在大量time wait狀態的連線 tcp 0 0 127.0.0.1 3306 127.0.0.1 41378 time wait tcp 0 0 127.0.0.1 3306 127.0.0.1 41379 time wait tcp 0 0 127.0.0.1 3306 127.0.0....