歡迎您光臨本站 註冊首頁

負載均衡不能盲目求多

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

負載均衡在很多人眼裡可能是集群架設的基礎,可能會有人覺得負載均衡後端的真實伺服器越多處理速度越快,當然這種想法是正確的,但是這是建立在不考慮LB伺服器的負載模式和掛在負載均衡伺服器後面的資料庫伺服器處理速度的前提下的,下面我介紹一個我自己的經歷吧:

我們的一個業務之前一直是由一個tomcat再運行,基本上沒什麼架構可談,簡單的client----tomcat----oracle這樣的一個順序.知道有一天,我們的tomcat頻繁的down服務,用netstat命令查看鏈接數處於ESTABLISHED狀態的有1000~2000個!好吧!我這裡吐槽一下,我來這裡之前這裡的16G內存的Linux伺服器居然用的是32位的OS!!

我調過了tomcat和JVM的基本設置,但是受限於32位OS的內存和句柄限制,對於業務也沒有什麼明顯的緩解,於是開始著手搭建負載均衡.

一上來由於沒有其它的伺服器能夠立刻上線,又32位的操作系統浪費了大量的內存,我就用了一個奇葩的單機多實例- -(請不要學我,這裡對於單點故障完全沒有任何益處)我在伺服器上同時運行了4個tomcat和1個負載均衡的程序,這裡我試驗過varnish、nginx和現在正在使用的haproxy.

一開始雖然運行了4個tomcat但是OS的限制依舊很明顯,但是處理隊列的增加明顯的減少了運行隊列的等待情況,鏈接數也有原來的6000 變到了2000附近,處於ESTABLISHED狀態的鏈接更是減少到了400附近.

就這樣又平穩的運行了一個多月,終於新的伺服器到位了,OS也換成了64位的了.於是我把之前的4個tomcat遷移到了新的伺服器上,於是乎新的問題出現了.由於新伺服器(應該和64位的OS有關係)處理能力的提升,雖然處理速度變快了,但是後面的資料庫卻出現了明顯的壓力.

通過觀察和測試,平均我每啟動一個tomcat,資料庫伺服器的負載壓力立刻就會提升10(load average),用vmstat命令看R的增長也在10左右.於是原來的4個tomcat直接就把負載在10以內的資料庫伺服器壓到了40,這還是非高峰期!

鑒於這種情況再DBA的協助調整下,一方面對於資料庫做了些優化,但是效果不明顯,我把tomcat的數量削減到了2個,就這樣到現在運行了1周的時間裡面訪問速度不但比之前的4個tomcat負載還要好,伺服器也幾乎沒有出現過程序故障(這裡再吐槽一下DELL R710的網卡驅動太和諧了).

到這裡這個問題也就基本上解決了,負載均衡雖然可以增加處理隊列,增加對請求的處理速度,但是再搭建的同時也要考慮一下應用對資料庫的負載壓力.只有找到一個良好的平衡點才能讓業務運行又快又平穩!

以上!

本文出自 「空の心」 博客,請務必保留此出處http://songknight.blog.51cto.com/2599480/862683


[火星人 ] 負載均衡不能盲目求多已經有261次圍觀

http://coctec.com/docs/linux/show-post-45908.html