解决webserver tcp连接大量CLOSE_WAIT 问题
? netstat -n | awk '/^tcp/ {++S[$NF]} END{for(a in S) print a, S[a]}'
??
? LAST_ACK 1
? SYN_RECV 15
??CLOSE_WAIT7729?
? ESTABLISHED 471
? FIN_WAIT1 3
? FIN_WAIT2 52
? SYN_SENT 1
? TIME_WAIT 725
? 從結(jié)果可以看到有大量的連接處于CLOSE_WAIT狀態(tài)。
要解決這個(gè)問(wèn)題的可以修改系統(tǒng)的參數(shù),系統(tǒng)默認(rèn)超時(shí)時(shí)間的是7200秒,也就是2小時(shí)。
默認(rèn)如下:
tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds
意思是如果某個(gè)TCP連接在idle 2個(gè)小時(shí)后,內(nèi)核才發(fā)起probe.如果probe9次(每次75秒)不成功,內(nèi)核才徹底放棄,認(rèn)為該連接已失效
修改后
sysctl -w net.ipv4.tcp_keepalive_time=30
sysctl -w net.ipv4.tcp_keepalive_probes=2
sysctl -w net.ipv4.tcp_keepalive_intvl=2
經(jīng)過(guò)這個(gè)修改后,服務(wù)器會(huì)在短時(shí)間里回收沒(méi)有關(guān)閉的tcp連接。
總結(jié)
以上是生活随笔為你收集整理的解决webserver tcp连接大量CLOSE_WAIT 问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TOMCAT websocket 多连接
- 下一篇: EAI简单介绍