2015-10-20 96 views
0

acceptCount隊列維護在操作系統級別。假設我們有一個10K的acceptCount隊列。CLOSE_WAIT連接的Tomcat行爲

情況 - 服務器無法處理請求,或者由於其中一個依賴關係或網絡問題而需要很長時間,並且在所有客戶端超時期間。最終隊列有10K的CLOSE_WAIT連接。現在,如果服務再次備份並開始處理。它會清理CLOSE_WAIT連接隊列嗎?在這種情況下,tomcat將如何表現。

回答

0

約CLOSE_WAITS和達到最大連接數/線程數,一些提示 (我曾在WebLogic Server中類似的問題,但這些都是一般提示)

釋放阻塞線程由於網絡問題:(如果按照允許對企業)

  1. 設定超時值給所有的遠程調用(如DB/HTTP/EJB/..)
  2. 檢查終止/殺長時間運行的線程(請求)

在嘗試任何解決方法之前,請仔細檢查並找到根本原因。

CLOSE_WAITS在重負載期結束後應該清除以防萬一這是問題,但是在線程卡住的情況下,您可能需要儘快重啓以解決問題。

0

acceptCount隊列維持在操作系統級別。

通過這個,我假設你的意思是監聽積壓隊列。

比方說,我們有一個acceptCount隊列10k。

有沒有辦法告訴。你可以提示給操作系統多長時間你會喜歡它,但是操作系統可以向上和向下調整它,並且沒有API告訴你實際長度是多少。

最終隊列有10k個CLOSE_WAIT連接。

不,它不。 CLOSE_WAIT狀態不會在任何地方排隊,並且監聽積壓隊列與CLOSE_WAIT無關。

它會清理CLOSE_WAIT隊列嗎?

有沒有這樣的隊列來清理。

如果你真正問的是將重啓過程中清除所有端口在CLOSE_WAIT狀態時,得到的答覆是退出其持有他們會那樣做的過程。

但是,讓Tomcat檢測所有關閉的連接並關閉它們本身也是如此。如果你有很多這些,真正的問題是它沒有自動執行的原因。這應該。

如果這是由某個請求被轉發引起的,那麼這聽起來像某些內部同步的東西,不應該在應用程序中同步。

+0

通過acceptCount,我正在討論tomcat的acceptCount參數。 https://tomcat.apache.org/tomcat-7.0-doc/config/http.html – User23890

+0

@ User23890是。無論如何,與CLOSE_WAIT無關。 – EJP

+0

通過10K的CLOSE_WAIT連接隊列,我的意思是OS上的連接隊列。我想我在這裏混淆了它。但是監聽積壓隊列就是我所說的。與acceptCount不是一回事嗎? 編輯 - 對不起然後它的maxConnections參數我在說 我想了解的事情是 - 如果您的服務已經超過千客戶端發送數據和服務依賴關係之一,會發生什麼。服務器將在服務端堆疊CLOSE_WAIT連接。不是嗎?如果這是真的,他們將如何清理? – User23890