CentOS, 解決伺服器存在大量time_wait的問題,centostime_wait

來源:互聯網
上載者:User

CentOS, 解決伺服器存在大量time_wait的問題,centostime_wait

近期伺服器出現大量time_wait的TCP串連造成伺服器串連數過多而最終導致tomcat假死狀態。串連伺服器查看串連數的時候提示如下。

[root@test apache-tomcat-7.0.53]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 14434FIN_WAIT2 6ESTABLISHED 133
很明顯可以看出是請求太多頻繁,主要由於後端伺服器之間是通過rest請求相互調用的,而java伺服器回收tcp線程速度比較慢,雖然已經有顯性的關閉串連了,但是實際在調

用的時候串連回收還是較慢。通過java API解決這個問題的路子就堵死了。

後來去伺服器查閱了大量資料,可以考慮通過修改linux核心的方式解決此處問題。解決方案如下:

vi /etc/sysctl.conf

添加配置資訊

#表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊。預設為0,表示關閉net.ipv4.tcp_syncookies = 1#表示開啟重用tcp串連。允許將TIME-WAIT sockets重新用於新的TCP串連。預設為0,表示關閉net.ipv4.tcp_tw_reuse = 1#表示開啟TCP串連中TIME-WAIT sockets的快速回收。預設為0,表示關閉net.ipv4.tcp_tw_recycle = 1#表示如果通訊端由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間  net.ipv4.tcp_fin_timeout = 30
讓參數配置生效

/sbin/sysctl -p
返回結果


問題完美解決:

[root@test apache-tomcat-7.0.53]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 96FIN_WAIT2 3ESTABLISHED 141


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.