TIME_WAIT接続過多の解決
[root@sends includes]# netstat -n | awk '/^tcp/{++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 1
SYN_RECV 164
CLOSE_WAIT 3
ESTABLISHED 655
FIN_WAIT1 15
FIN_WAIT2 81
SYN_SENT 3
TIME_WAIT 14274
システムがたくさんあるTIME_WAIT状態の接続は、すぐに回収できません.アクセス数が多いときに接続タイムアウトが発生することがよくあります.
解決策はカーネルパラメータを調整し、TIME_を速めることです.WAIT状態接続の回収と再利用の有効化.
Linux webサーバ共通カーネルパラメータ注記
調整後TIME_WAIT状態接続が直ちに減少:
[root@sends includes]# netstat -n | awk '/^tcp/{++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 9
SYN_RECV 171
CLOSE_WAIT 2
ESTABLISHED 767
FIN_WAIT1 27
FIN_WAIT2 13
TIME_WAIT 3675
[root@sends includes]# netstat -n | awk '/^tcp/{++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 9
SYN_RECV 275
CLOSE_WAIT 3
ESTABLISHED 1111
FIN_WAIT1 42
FIN_WAIT2 154
TIME_WAIT 1804
LAST_ACK 1
SYN_RECV 164
CLOSE_WAIT 3
ESTABLISHED 655
FIN_WAIT1 15
FIN_WAIT2 81
SYN_SENT 3
TIME_WAIT 14274
システムがたくさんあるTIME_WAIT状態の接続は、すぐに回収できません.アクセス数が多いときに接続タイムアウトが発生することがよくあります.
解決策はカーネルパラメータを調整し、TIME_を速めることです.WAIT状態接続の回収と再利用の有効化.
vi /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1 # 。 TIME-WAIT sockets TCP , 0, ;
net.ipv4.tcp_tw_recycle = 1 # TCP TIME-WAIT sockets , 0, 。
sysctl -p
その他のパラメータの調整は以前のブログを見てくださいLinux webサーバ共通カーネルパラメータ注記
調整後TIME_WAIT状態接続が直ちに減少:
[root@sends includes]# netstat -n | awk '/^tcp/{++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 9
SYN_RECV 171
CLOSE_WAIT 2
ESTABLISHED 767
FIN_WAIT1 27
FIN_WAIT2 13
TIME_WAIT 3675
[root@sends includes]# netstat -n | awk '/^tcp/{++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 9
SYN_RECV 275
CLOSE_WAIT 3
ESTABLISHED 1111
FIN_WAIT1 42
FIN_WAIT2 154
TIME_WAIT 1804