2015-04-01 59 views
0

我正在經歷的事情: 我們有一個連接到rabbitmq服務器的應用服務器。 隨着時間的推移,來自rabbitmq服務器的ESTABLISHED連接數量增加,但應用服務器的計數保持相當穩定。瞭解TCP動態

我在兩個運行此:

[email protected]:~# netstat -ant | grep EST | grep 5672 | grep 172.25.12.48 
tcp  0  0 172.25.12.48:50587  10.48.64.230:5672  ESTABLISHED 
tcp  0  0 172.25.12.48:50588  10.48.64.230:5672  ESTABLISHED 

[email protected]:~# netstat -ant | grep EST | grep 5672 | grep 172.25.12.48 
tcp6  0  0 10.48.64.230:5672  172.25.12.48:38408  ESTABLISHED 
tcp6  0  0 10.48.64.230:5672  172.25.12.48:50588  ESTABLISHED 
tcp6  0  0 10.48.64.230:5672  172.25.12.48:33491  ESTABLISHED 
tcp6  0  0 10.48.64.230:5672  172.25.12.48:50587  ESTABLISHED 
tcp6  0  0 10.48.64.230:5672  172.25.12.48:34541  ESTABLISHED 

實施例的結果將得到的RabbitMQ服務器上的應用程序服務器和15(甚至高達46)上說6。 我重新啓動rabbitmq服務器,顯然一切恢復正常,每邊有2個連接。

我假設交換機超時連接或應用程序不清楚地終止該過程。我正在研究這一點,但我想更好地理解TCP行爲。

的RabbitMQ的服務器上的當前設置:

tcp_retries1設置爲3
tcp_retries2設置爲15

所以我通常都期望看到周圍13-30分鐘,如果這些後「無效」連接降我正確理解論壇。

然而,看着TCP存活值:

tcp_keepalive_time設置爲7200(所以2h的它將把第一個存活探測後。)
tcp_keepalive_intvl是後75(所以75秒第一個,它將重新發送的探針。)
tcp_keepalive_probes是9(因此,這將在總髮送9個探針)

於是保活過程將需要7200+(9 * 75)= 7875,或大約2小時關閉之前11分鐘。

由於連接(假定)消失,導致兩個問題。
1.哪一個是正確的?
2.我是否錯過了另一個選項,除了開關或應用程序異常終止,可能導致這些無效連接?

來源:https://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html

+0

兩個主機之間的'ESTABLISHED'連接數不可能在每個主機上顯示爲不同。我建議你在兩臺主機上發佈實際的'netstat'輸出的相關部分。目前還不清楚你在說什麼。 – EJP 2015-04-01 09:04:35

+0

已更新帖子以包含netstat的實際輸出。 前幾天,我會同意你的聲明100%! – Werner 2015-04-01 19:43:37

+0

我應該改正這一點。如果一端已經重置了連接而另一端尚不知道這一點,那麼有可能。 – EJP 2015-05-31 22:57:17

回答

0

我們F5的是這樣做的原因。 似乎在空閒超時後,F5從其表中刪除條目。所以從應用程序服務器,連接是無效的,並且TCP關閉它們。 儘管從rabbitmq服務器,不知何故連接仍然是有效的連接。 雖然我不明白爲什麼交換機有能力保持連接狀態有效 - 但是,這是原因。