真沒想到雲計算之路上的天氣如此糟糕,比杭州的交通還要糟糕;今天上海晴空萬里,希望從今天開始「雲」上的天氣也一直晴空萬里。
昨天發布了博文雲計算之路-柳暗花明:為什麼memcached會堵車之後,去參加了阿里雲客戶交流會,哪知14:00左右會議剛開始,**又出現訪問速度慢的問題。。。
立即採取前天的措施,關閉memcached伺服器,立即恢復正常。。。但是,沒過多久問題又出現。。。
同樣的方法,為什麼前天能解決問題而昨天不能?這裡的不同之處是前天關閉memcached伺服器之後,正在走出訪問高峰期,而昨天正在走入訪問高峰期。
那為什麼關閉memcached伺服器之後會立即恢復正常?我們的猜測是:在關閉memcached伺服器之前,所有web伺服器都與memcached伺服器之間保持著很多tcp連線進行大量網路通訊,memcached伺服器的網路處理能力很可能是瓶頸。關閉memcached伺服器之後,直接走資料庫(rds),網路瓶頸不存在了。
但是關閉memcached伺服器之後,壓力會轉嫁給資料庫伺服器與web伺服器的cpu。資料庫伺服器用的是rds,剛剛的,這點轉嫁過來的壓力小case。怎麼會轉嫁給cpu呢,因為memcached快取的不是直接資料庫查詢結果,而是實體物件,這些實體物件不僅包含資料庫查詢結果,還包含對資料庫查詢結果的處理,比如一些正規表示式處理。而跑web伺服器的雲伺服器cpu一直是瓶頸,在出問題的期間都伴隨著cpu占用大、波動大,所以我們才用了4臺4核做負載均衡。我們猜測關閉memcached伺服器之後請求處理速度慢可能是cpu處理能力的原因。
於是,我們進行了這樣的假設:把雲伺服器想像成乙個黑盒子,黑盒包裝著印著「cpu占用不得高於某值,tcp連線數不得高於某值」。(注:這只是假設,不代表虛擬機器有這樣的限制。這是一種解決問題的手段,做科學研究有時也會先提出假設再證明這個假設)
然後,我們的解決思路就圍繞這個假設展開——1. 如何提高單台web伺服器的cpu處理能力/減少cpu處理壓力;2. 如何減少單台雲伺服器的網路連線負載(tcp連線數)?
解決方法一
之前,我們有個非常錯誤的想法——以為通過負載均衡(阿里雲slb)可以減少單台web伺服器的cpu處理壓力。所以也嘗試過在出問題時向負載均衡新增更多雲伺服器,結果證明解決不了問題。
而事實可能是,對於瞬間的併發請求,slb無用武之地。我們對slb的工作方式是這樣猜測的:slb只**請求,並不拆分請求。假如4臺web伺服器每台能支撐的併發請求數是500,slb一次收到了800的併發請求,一股腦兒**給其中一台web伺服器,這台web伺服器趴下了(扛不住);slb下一次收到了1000的併發請求,一股腦兒**給另一台web伺服器,那台也趴下了;接下來slb收到了1200的併發請求,第3臺web伺服器也趴下了。如果把這4臺web伺服器合併為1臺,能支撐的併發請求數是2000,就能輕鬆應對。
於是,我們把4臺web伺服器中的2臺由4核4g公升級為8核8g,把另外2臺從slb中摘掉。負載均衡由原來的4臺4核4g變為2臺8核8g。
解決方法二
在所有雲伺服器(虛擬機器)中,memcached伺服器是網路連線負載最高的,因為所有web伺服器都與之通訊。資料庫用的是rds,是物理機,不在考慮範圍。
我們想到了乙個終極方法,將couchbase直接安裝在兩台web伺服器上,web伺服器與memcached伺服器之間通過127.0.0.1介面進行本地通訊,通過couchbase的集群功能讓兩台memcached伺服器的資料保持同步。
web.config中memcached客戶端配置變為這樣:
<以前我們自己託管伺服器時,也是這樣部署的,單台8核8g既跑web又跑memcached。enyim.com
>
<
memcached
protocol
="binary"
>
<
servers
>
<
add
address
="127.0.0.1"
port
="11211"
/>
servers
>
<
socketpool
minpoolsize
="10"
maxpoolsize
="300"
connectiontimeout
="00:00:01"
deadtimeout
="00:00:01"
/>
memcached
>
enyim.com
>
這兩個方法是在今天早上睡醒後想到的,然後一躍而起,在早上8點之前完成了部署。
正因為有了這兩個解決措施,才敢展望:希望從今天開始烏雲變藍天!
雲計算之路 阿里雲上 烏雲飄過
一周的萬里無雲是我們的第乙個目標,這周天氣情況好轉,但昨天 今天下午依然有烏雲飄過。昨天下午16 40 16 48左右,部落格站點的兩台web伺服器突然出現cpu坐過山車的波動情況。今天下午14 26 14 32左右再次出現cpu坐過山車的波動情況,之後又出現了幾次短時間的波動。這兩朵烏雲飄過時,都...
雲計算之路 阿里雲上 愚人節被阿里雲OCS愚
今天是愚人節,而我們卻被阿里雲ocs愚,很多地方的快取一直不過期,造成很多頁面中的資料一直不更新。這篇博文將向您分享我們這兩天遇到的ocs問題。阿里雲ocs open cache service 是阿里雲提供的開放快取服務,簡單來說就是乙個巨大的memcached。我們是從2013年12月12日開始...
雲計算之路 阿里雲上 在烏雲中堅信藍天
繼續向大家匯報阿里雲上的天氣變化情況。今天 5月8日 上午糟糕的天氣 8 30 9 50,10 50 11 40 給大家逛園帶來了很大的麻煩,請諒解!早上8 30左右由於阿里雲rds出現突發故障 故障是rds負載均衡引起的 造成 不能正常訪問,訪問時出現了錯誤。8 45左右rds恢復正常,但由於rd...