(上圖是今天出問題期間Web服務器性能監控圖,紫色表示的是Request Execution Time)
昨天我們發布了一篇博客分享了我們這兩天遇到的OCS(開放緩存服務)問題,詳見云計算之路-阿里云上:愚人節被阿里云OCS愚。
后來,阿里云確認了問題的原因:在OCS升級過程中造成了寫入的緩存數據過期時間丟失,只需刪除這些有問題的緩存數據就不會再出現這個問題。
今天一大早訪問低峰的時候,我們進行了清空OCS實例緩存的操作,解決了OCS緩存不能過期的問題。
今天中午11:30左右,園子訪問速度突然變慢,上Web服務器一看——就看到了上面的性能監控器,大量請求執行緩慢。當時看到這樣的圖,真的很心痛——每個跳高的紫色都代表著用戶的不滿、憤怒,都是對用戶體驗的極大傷害,我們性能優化的一切努力都是為了降低這個紫色。而云基礎實施服務的一點問題就會讓我們的努力付之流水。
心痛歸心痛,面對問題,唯一的選擇是解決問題。
再看上面的性能監控圖,Web服務器的CPU占用是正常的(紅色線條),說明問題不在云服務器。
接著看數據庫服務器(RDS)的狀況——
(上圖是RDS數據庫連接數的監控數據)
出問題期間,RDS的數據庫連接數突然飆上去了,這是一個很重要的線索——根據我們的應用場景,只有緩存服務出問題或者緩存命中率急驟下降,才能造成這樣的數據庫連接數突增。
而出現這樣的問題,不僅僅是給數據庫帶來壓力造成性能下降,更糟糕的是在從數據庫中讀取數據后還要再寫入緩存,這也帶來額外的性能影響。如果緩存一直有問題,就會不斷地進行這樣的循環:讀緩存->沒命中->讀數據庫->寫緩存。。。這樣一折騰,網站訪問速度會大受影響
出問題時的場景很可能就是這樣,所以我們不得不把懷疑對象又放到了阿里云OCS上。
緊接著就是查看應用程序的日志,我們在應用中進行了這樣的記錄——只要讀取緩存超過100毫秒,就記錄日志。出人意料的是日志中幾乎沒有超過100毫秒的緩存讀取記錄,也就是說出問題期間讀取OCS緩存的速度是很快的。
難道也不是OCS引起的問題?。。。
關于緩存,還有一個我們不能忽視的地方——緩存命中率。
如果假設當時OCS的緩存命中出了問題——緩存中有數據卻讀取不到或者數據沒有真正寫入緩存,問題期間所發生的現象就都得到了合理的解釋。
但是由于OCS管理控制臺查看不到歷史監控數據,看不到出問題期間的緩存命中率,我們無法驗證這個猜測。只能等待阿里云的排查,目前阿里云還在排查中。
11:50左右,一切又恢復了正常。
在出問題的期間,給大家帶來了麻煩,望大家諒解!
文章列表