2010-07-02 41 views

回答

3

但是,在關閉瀏覽器之前,TCP連接是否持續存在?爲什麼下一個請求可能會切換不同的服務器?

一旦網頁加載,並且所有圖像,css文件和其他資產都被檢索到,TCP連接將很快關閉(例如,Apache 2.2中的after 5 seconds by default)。當用戶點擊其他內部鏈接時,會打開一個新的TCP連接。這可能會導致多服務器負載均衡場景中的另一臺服務器上。

+0

糟糕...我以爲TCP連接的生命週期與瀏覽器窗口是一樣的.. – powerboy 2010-07-02 01:27:47

+0

單個TCP會話的生命週期甚至可能不是單個「頁面」 - 這是可能的,甚至很可能,許多會話將並行運行,以便下載核心頁面,每個圖像或JavaScript src或其他任何可以爲了效率而遠離另一會話的內容。 – paxdiablo 2010-07-02 01:34:41

1

將會話存儲在數據庫中,以便在負載平衡應用程序時,負載平衡器可以將請求轉發到服務器場中的任何服務器,並仍然可以正確訪問會話數據。

對網頁的單個請求將轉到單個服務器。下次用戶發出請求時,會創建一個新的TCP連接,並可以將其發送到服務器場中的其他服務器。

0

瀏覽器中的頁面加載通常是無狀態的(即,頁面完全加載後它們不會存儲狀態)。

這意味着您的下一頁加載可能與從購物目錄頁面到購物車頁面一樣簡單,它是一個單獨的HTTP「事務」。

事實上,一個頁面及其12個圖像(和400個色情廣告)的文本可能每個都會轉到一個完全獨立的服務器(即使它們使用相同的基本URL),因爲它們可能使用不同的TCP會話。

您不希望序列化所有流量,以便重新使用單個TCP會話,但在單獨的會話上並行執行它們通常會更快。

因此,它可能最終在一個完全不同的服務器,是的。在這種情況下,你會希望存儲在某種共享資源(如數據庫)中的狀態。

還有其他方法可以解決問題(總是存在),例如基於IP的關聯,其中來自同一IP地址的流量將優先選擇同一臺服務器,但面對所有可愛的負載平衡體系結構時,這種蒼蠅:-)

相關問題