大文件讀寫?yīng)氄即疟P引發(fā)的故障
故障現(xiàn)象:
某應(yīng)用主要功能是管理用戶圖片肘习,但是上傳圖片突然非常慢际乘。
原因分析:
檢查存儲服務(wù)器,發(fā)現(xiàn)大部分文件只有幾百 KB漂佩,而有幾個文件非常大脖含,有數(shù)百兆,讀寫這些大文件一次需要幾十秒投蝉,這段時間养葵,磁盤基本被這個文件獨(dú)占,導(dǎo)致其他用戶的文件操作緩慢瘩缆。
經(jīng)驗(yàn)教訓(xùn):
存儲的使用需要根據(jù)不同文件類型和用途進(jìn)行管理关拒,圖片都是小文件,應(yīng)該使用專用的存儲服務(wù)器庸娱,不能和大文件共用存儲着绊。批處理用的大文件可以使用其他類型的分布式文件系統(tǒng)。
高并發(fā)訪問數(shù)據(jù)庫引發(fā)的故障
故障現(xiàn)象:
某應(yīng)用發(fā)布后熟尉,數(shù)據(jù)庫 Load 居高不下归露,遠(yuǎn)超正常水平,持續(xù)報警斤儿。
原因分析:
檢查數(shù)據(jù)庫靶擦,發(fā)現(xiàn)報警是因?yàn)槟硹l SQL 引起的腮考,這條語句執(zhí)行頻率很高,遠(yuǎn)超正常水平玄捕。追查這條 SQL,發(fā)現(xiàn)被網(wǎng)站首頁調(diào)用棚放。
經(jīng)驗(yàn)教訓(xùn):
- 首頁不應(yīng)該訪問數(shù)據(jù)庫枚粘,首頁需要的數(shù)據(jù)可以從緩存服務(wù)器或者搜索引擎服務(wù)器獲取。
- 首頁最好是靜態(tài)的飘蚯。
高并發(fā)情況下鎖引發(fā)的故障
故障現(xiàn)象:
某應(yīng)用服務(wù)器不定時地因?yàn)轫憫?yīng)超時而報警馍迄,但是很快又超時解除,恢復(fù)正常局骤,如此反復(fù)攀圈。
原因分析:
程序中某個單例對象中多處使用了
synchronized(this)
,由于this
對象只有一個峦甩,所有的并發(fā)請求都要排隊(duì)獲得這唯一的一把鎖赘来。一般情況下,都是一些簡單操作凯傲,獲得鎖犬辰,迅速完成操作,釋放鎖冰单,不會引起線程排隊(duì)幌缝。但是某個需要遠(yuǎn)程調(diào)用的操作也被加了synchronized(this)
,這個操作只是偶爾會被執(zhí)行诫欠,但是每次執(zhí)行都需要較長的時間才能完成涵卵,這段時間鎖被占用,所有的用戶線程都要等待荒叼,響應(yīng)超時轿偎,這個操作執(zhí)行完后釋放鎖,其他線程迅速執(zhí)行甩挫,超時解除贴硫。
經(jīng)驗(yàn)教訓(xùn):
使用鎖操作要謹(jǐn)慎。