HAProxy是咱們選用的世界一流的負載均衡器,每秒可處理250,000個鏈接及數萬個請求。不只功能強大,並且經事實證實,它仍然很是靈活,有強大的記錄及監控系統還有不少其它特色。瀏覽器
可是,同其它許多負載均衡器相同的是,HAproxy的主要特色也是:粘滯會話。這一功能頗有用,甚至對於某些系統來講,是必須的,如某些系統的網絡服務器會話是不可移動的,即不可在網絡服務器之間隨機移動會話。許多PHP系統不使用此功能,由於它們使用Memcache來存儲會話。可是基於Java的系統一般採用此功能,由於不少數據是存在本地每臺應用服務器的內存中。服務器
由於各類需求不一樣,而不少人認爲,粘滯是好的,因此,咱們的系統默認設置就是粘滯會話。HAProxy使用cookie來追蹤用戶或瀏覽器最後使用的後臺服務器,若是有新的需求,將自動轉給一樣的後臺服務器進行處理。cookie
雖然看起來這一系統功能工做簡單,可是有時候是會遇到問題的,事實上,最近發生的一系列問題,使咱們從新思考是否應該把粘滯會話設置爲默認狀態,是否對於某些服務,尤爲是對於大型的繁忙系統,咱們能夠關閉這一功能嗎?網絡
儘管從理論上來講,一切應該不會出錯,可是在系統高負載時的動態行爲可能致使系統不穩定。咱們見到過這樣一個案例,當後臺服務器已經超負荷的時候,負載均衡器仍然把需求調度到這一服務器,直至服務器癱瘓,而事實上,負載均衡器應該把用戶需求調度到其餘服務器上進行處理。session
這是由於cookie要求這樣作,因此才發生此操做。儘管HAProxy有負載均衡分配方法即令牌循環分配法,但要弄清楚一點:這種方法只是在沒有cookie的狀況下才會進行請求分配。當存在cookie的時候,會分配給同一臺後臺服務器,直至服務器癱瘓。而後,cookie和負載再轉至下一臺服務器,致使下一臺服務器超負載。負載均衡
這會帶來不少系統不穩定問題,當超負載時,負載會在系統間不斷跳動。結果就是,對於每秒處理上千請求的繁忙系統來講,要想關閉它或排除其故障,真的是很困難的。ide
所以,關閉cookies或會話後,實際的令牌循環或其它有用的方案如最小鏈接數才能生效,能夠對請求進行均衡處理。咱們親歷過關閉這些cookie或會話後,系統穩定性提升了不少。性能
因此,如今只有當須要用到粘滯會話的時候,咱們才用,如Java系統或其它系統。除了這些特殊狀況以外,咱們會讓請求自由分配,以提升系統性能及穩定性。spa
(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文請點此查看)
blog