文章出處

阿里云云服務器性能監控圖

(上圖是今天出問題期間Web服務器性能監控圖,紫色表示的是Request Execution Time)

昨天我們發布了一篇博客分享了我們這兩天遇到的OCS(開放緩存服務)問題,詳見云計算之路-阿里云上:愚人節被阿里云OCS愚

后來,阿里云確認了問題的原因:在OCS升級過程中造成了寫入的緩存數據過期時間丟失,只需刪除這些有問題的緩存數據就不會再出現這個問題。

今天一大早訪問低峰的時候,我們進行了清空OCS實例緩存的操作,解決了OCS緩存不能過期的問題。

今天中午11:30左右,園子訪問速度突然變慢,上Web服務器一看——就看到了上面的性能監控器,大量請求執行緩慢。當時看到這樣的圖,真的很心痛——每個跳高的紫色都代表著用戶的不滿、憤怒,都是對用戶體驗的極大傷害,我們性能優化的一切努力都是為了降低這個紫色。而云基礎實施服務的一點問題就會讓我們的努力付之流水。

心痛歸心痛,面對問題,唯一的選擇是解決問題。

再看上面的性能監控圖,Web服務器的CPU占用是正常的(紅色線條),說明問題不在云服務器。

接著看數據庫服務器(RDS)的狀況——

阿里云RDS監控圖

(上圖是RDS數據庫連接數的監控數據)

出問題期間,RDS的數據庫連接數突然飆上去了,這是一個很重要的線索——根據我們的應用場景,只有緩存服務出問題或者緩存命中率急驟下降,才能造成這樣的數據庫連接數突增。

而出現這樣的問題,不僅僅是給數據庫帶來壓力造成性能下降,更糟糕的是在從數據庫中讀取數據后還要再寫入緩存,這也帶來額外的性能影響。如果緩存一直有問題,就會不斷地進行這樣的循環:讀緩存->沒命中->讀數據庫->寫緩存。。。這樣一折騰,網站訪問速度會大受影響

出問題時的場景很可能就是這樣,所以我們不得不把懷疑對象又放到了阿里云OCS上。

緊接著就是查看應用程序的日志,我們在應用中進行了這樣的記錄——只要讀取緩存超過100毫秒,就記錄日志。出人意料的是日志中幾乎沒有超過100毫秒的緩存讀取記錄,也就是說出問題期間讀取OCS緩存的速度是很快的。

難道也不是OCS引起的問題?。。。

關于緩存,還有一個我們不能忽視的地方——緩存命中率。

如果假設當時OCS的緩存命中出了問題——緩存中有數據卻讀取不到或者數據沒有真正寫入緩存,問題期間所發生的現象就都得到了合理的解釋。

但是由于OCS管理控制臺查看不到歷史監控數據,看不到出問題期間的緩存命中率,我們無法驗證這個猜測。只能等待阿里云的排查,目前阿里云還在排查中。

11:50左右,一切又恢復了正常。

在出問題的期間,給大家帶來了麻煩,望大家諒解! 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()