Linux實例中FIN_WAIT2狀態(tài)的TCP鏈接過多
發(fā)布時間:2021-04-21 點擊數(shù):753
問題現(xiàn)象
FIN_WAIT2狀態(tài)的TCP鏈接過多。
原因分析
- 在HTTP服務中,Server由于某種原因會主動關(guān)閉連接,例如KEEPALIVE超時的情況下。作為主動關(guān)閉連接的Server就會進入FIN_WAIT2狀態(tài)。
- 在TCP/IP協(xié)議棧中,存在半連接的概念,F(xiàn)IN_WAIT2狀態(tài)不算超時,如果Client不關(guān)閉,F(xiàn)IN_WAIT2狀態(tài)將保持到系統(tǒng)重啟,越來越多的FIN_WAIT2狀態(tài)會致使內(nèi)核Crash。
- 建議調(diào)小net.ipv4.tcp_fin_timeout參數(shù)的值,以便加快系統(tǒng)關(guān)閉處于FIN_WAIT2狀態(tài)的TCP連接。
解決方法
-
執(zhí)行vi /etc/sysctl.conf命令,修改或增加以下內(nèi)容。
net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000
-
執(zhí)行sysctl -p命令,使配置生效。