2011-10-05 70 views
1

我試圖用相當標準的CentOS/Apache設置來提高(虛擬)Web服務器的性能,我注意到的一件事是新連接似乎「 「在SYN_RECV狀態下,有時會持續幾秒鐘,然後才能最終建立並由Apache處理。評估/診斷時間連接在建立之前在SYN_RECV中

我的第一個猜測是,Apache可能已經達到了它準備同時處理的連接數量的限制,但例如,與netstat保持連接狀態報告一些已建立的連接(只是那些不涉及本地主機,因此丟棄例如Apache和Tomcat之間的「內務」連接),而保持活動狀態則會愉快地獲得多達100多個建立的連接(但對於SYN_RECV行爲無論哪種方式都沒有明顯的區別 - 在任何時候,通常都有10-20個連接位於SYN_RECV中)。

對於調查哪些瓶頸是阻止快速建立連接,人們的建議是什麼?

P.S.後續問題:是否有人知道一旦首次「擊中」服務器就建立連接的時間,典型的統計數據會是什麼?

更新的情況下,任何人遇到這樣的:到底,我寫了一個小型的Java程序採取從/ proc /網/ TCP數據和分析,看來,這是發生了連接的一小部分(儘管這仍然意味着在任何時候在這種狀態下都可能有多個連接,因爲它們可以保持這種方式幾秒鐘)並且看起來像是這些連接的本地問題。超過90%的連接仍然在< 500毫秒和81%在< 200毫秒。所以如果其他人得到這個,不一定需要立即出現恐慌。

回答

2

嘗試捕獲數據包跟蹤並查看是否正在重傳SYN ACK(以及re-tx的數量)。這可能表示路由問題(SYN通過路徑A進入,並且SYN-ACK通過路徑B被破壞)。

另請參閱這些連接是否具有特定模式(例如來自同一網絡)。