一次磁盤瓶徑分析經驗

一、項目簡介:一個視頻推廣系統與多家網站合作,其它網站調用我方視頻資源。每調用一次會在我方磁盤上寫一條日誌。日誌文件是以分鐘爲單位生成。上線後每秒鐘到2000個請求時出現性能問題。固在線下做壓力測試尋找性能瓶徑。

二、測試環境   
        1臺客戶端: windows2003   loadrunner
        1臺服務器 : cpu 16核   mem 16G      php+nginx+mysql+memcache

三、測試策略:
       1個固定的url,帶有各種參數,直接入日誌。運行時使用無間隔不斷加壓,腳本如下:

Action()
{
//web_add_cookie("user=Kqcq056x1pddq7Ip6c6kd; DOMAIN=v.ifeng.com");
//web_add_cookie("PHPSESSID=dfea59a03919d6d01f47eaacf08c2; DOMAIN=v.ifeng.com");
web_url("page", 
"URL=http://192.168.xx.xx/page?guid=ff1edsb0ddb-79ff-45f3-af73-46247a8c88bd&user=vchanpin&refer=aHR0cDovL3dlaWJvLmNvbS94aWFveGlldG9uZ3h1ZS9wcm9maWxlP2xlZnRuYXY9MSZ3dnI9My42JmlzX3ZpZGVvPTE=&from=sinaweibo&AutoPlay=true&tm=446642", 
"Resource=0", 
"RecContentType=text/html", 
"Referer=", 
"Mode=HTML", 
LAST);
return 0;
}

四、瓶徑分析:

1,壓力過程使用top查看服務器資源,其它值正常,唯獨cpu的sy偏高,判斷爲系統本身進程影響性能,而非應用進程。在loadrunner中查看的響應時間波動也較大。
2,通過iostat -x  1查看, await 和avgqu-sz會隔2-3秒出現一次偏高。其它值正常。
3,通過iostat -p 1查看,哪個目錄讀寫頻繁,結果如下  cciss/c0d0p6  磁盤寫入頻繁。通過df 查看此盤掛載的是/tmp文件夾。進入後查看是很多sess開頭的臨時文件
      應該有幾萬個。可以判斷正是由於生成的這些文件影響了性能。此文件是php生成的session文件,開發將過期時間設置成了2個小時,所以壓力過程在不斷生成這些文件時候消耗了大量時間,併發是文件體積大造成,而是由文件數太多造成。
4,後來把這些文件指向/dev/shm(內存),並設置過期時間10秒。性能一切正常。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章