1. 程式人生 > >CentOS, 解決伺服器存在大量time_wait的問題

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

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

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

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

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

vi /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


#表示SYN佇列的長度,預設為1024,加大佇列長度為8192,可以容納更多等待連線的網路連線數。
net.ipv4.tcp_max_syn_backlog = 4096


#表示開啟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


##減少超時前的探測次數
net.ipv4.tcp_keepalive_probes=5
##優化網路裝置接收佇列
net.core.netdev_max_backlog=3000
讓引數配置生效
/sbin/sysctl -p
返回結果如圖:


問題完美解決:

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


相關推薦

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

近期伺服器出現大量time_wait的TCP連線造成伺服器連線數過多而最終導致tomcat假死狀態。連線伺服器檢視連線數的時候提示如下。 [[email protected] apache-tomcat-7.0.53]# netstat -n | awk '/^

解決伺服器存在大量TIME_WAIT和CLOSE_WAIT狀態

裡頭的分析過程有提到,通過檢視伺服器網路狀態檢測到伺服器有大量的CLOSE_WAIT的狀態。 在伺服器的日常維護過程中,會經常用到下面的命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) prin

解決-伺服器Linux存在大量time_wait的問題,導致服務效能問題,甚至嚴重的將訪問不了應用

netstat -an檢視到大量的TIME_WAIT狀態的解決辦法 近期伺服器出現大量time_wait的TCP連線造成伺服器連線數過多而最終導致tomcat假死狀態。連線伺服器檢視連線數的時候提示如下。 [[email protected] apache-tomcat-7.

網路伺服器-解決伺服器大量TIME_WAIT而無法訪問的方法

前段時間我在進行線上專案壓力測試的時候,遇到了一個吞吐量的效能問題,當時我的Server和Client之間的通訊協議採用了Json Over HTTP的方式(並且在同一個機器上面,其實應該是出現在Client的那個機器上),而且由於Client的實現原因,沒有任何KeepAlive機制,同時必須有大量的請

Nginx造成後端伺服器大量TIME_WAIT解決辦法

1 Linux下調引數 2 Windows下修改登錄檔 以上兩種方法滿處都是,不再贅述。 據說Nginx預設使用短連線和後端伺服器通訊,所以可以嘗試改成長連線,也就是keepalive, 我這裡是把Nginx升級到1.2版本,會帶ngx_http_upstream_ke

CentOS/Linux伺服器的記憶體不夠解決方法

又由於我安裝其他工具,提示我記憶體不足,所以想用提高虛擬記憶體的方法去安裝這個軟體,本來都已經安裝完了,今天我手賤把Linux重啟了一下,沒看仔細,不過也不是壞事情,正好記錄下設定過程,以便下次再重啟的時候方便設定! 1.開啟終端,切換到root使用者,輸入:free -m檢視記憶體狀態[[email

大量TIME_WAIT連線的解決辦法

根據TCP協議的連線斷開規定,發起socket主動關閉的一方,socket將進入TIME_WAIT狀態,TIME_WAIT狀態將持續2個MSL(Max Segment Lifetime),在Windows下預設為4分鐘,即240秒,TIME_WAIT狀態下的so

解決系統中大量TIME_WAIT連線

[[email protected] logs]# netstat -an | grep TIME_WAIT tcp 0 0 a.a.a.a:54709 b.b.b.b:3306 TIME_WAIT

【總結】 Nginx大量TIME_WAIT解決辦法

在阿里雲預設的系統TCP引數情況下,會導致大量的TIME_WAIT出現 檢視 優化方法 修改核心引數 # vi /etc/sysctl.conf   net.ipv4.tcp_syncookies = 1

系統存在大量TIME_WAIT解決方案

如發現系統存在大量TIME_WAIT狀態的連線,通過調整核心引數解決,vim /etc/sysctl.conf編輯檔案,加入以下內容:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_rec

Resin伺服器出現大量的ESTABLISHED和TIME_WAIT連線造成響應緩慢

Resin服務的埠為8080,執行 lsof -i:8080 命令出現大量的ESTABLISHED連線: 然後執行netstat -n | awk ‘/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}’ 命令發現

資料庫伺服器處理大量請求響應很慢時的可能解決方法

由於資料庫操作是阻塞同步的,因此當一條sql語句處理較長時間時會導致整體處理很慢 一般的解決方法是增加資料庫連線數。實際上是增加執行緒,每個執行緒一個連線 一般在mysql佔用cpu不高的情況下可以不斷增加連線跟執行緒,以提高處理速度 mysql的最大連線數也是有限制的,當

大量TIME_WAIT的終極詳解和解決方案

上篇筆記主要介紹了與TIME_WAIT相關的基礎知識,本文則從實踐出發,說明如何解決文章標題提出的問題。 1. 檢視系統網路配置和當前TCP狀態在定位並處理應用程式出現的網路問題時,瞭解系統預設網路配置是非常必要的。以x86_64平臺Linux kernelversion

[zz]大量被佔用(kswap程序CPU利用率過高)的解決方案

 問題描述:      通過free檢視時,大概有一半以上的實體記憶體分配到cache裡面,這樣大的     cache是造成記憶體的耗盡緣由,與此同時使用top或ps檢視程序時,kswapd程序負荷     很高,一般在90%以上,kswapd程序的作用是用於記憶

伺服器開發之大量time_wait 和 close_wait現象

一.tcp狀態轉換圖因為time_wait和close_wait狀態都是在tcp四次揮手狀態下觸發的,所以小夥伴們直接看下圖狀態變化的解釋過程:從客戶端來看:1.客戶端主動斷開連線時,會先發送FIN包,客戶端此時進入FIN_WAIT_1狀態;2.客戶端收到伺服器的ACK包(對

nginx大量TIME_WAIT解決辦法

由於網站使用nginx做的反向代理he負載均衡。在沒有預設的系統TCP引數情況下回導致大量的TIME_WAIT出現。 終端可以下敲入 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]

mysql解決大量time_wait

狀態 blog ade 占用 recycle 正常 sta rep lin mysql解決大量time_wait 命令查看TIME_WAIT連接數 netstat -ae|grep "TIME_WAIT" |wc

Linux下Tomcat設置內解決溢出

logs server nco gen exec space 設置 xms mem 最近使用tomcat做服務器,項目中有個導入excel,數據大約2萬左右。在本地eclipse調試導入沒問題。 但是部署到linxu後就報 "http-bio-8080-exec-4" j

使用spring、structs等框架時使用IntrospectorCleanupListener解決泄露問題

自己 lean 容器 越來越大 tor 應用 structs 服務器 分析 在進行Java開發時,如果框架或者程序用到了JavaBeans Introspector了,那麽就啟用了一個系統級別的緩存,這個緩存會存放一些曾加載並分析過的javabean的引用,當web服務器關

centos解決網絡問題

centos打開/etc/sysconfig/network-scripts/ifcfg-eth1文件如下填寫DEVICE=eth1HWADDR=XXXXXXTYPE=EthernetUUID=XXXXXONBOOT=noNM_CONTROLLED=yesBOOTPROTO=dhcp打開/etc/syscon