一、項目簡介:一個視頻推廣系統與多家網站合作,其它網站調用我方視頻資源。每調用一次會在我方磁碟上寫一條日誌。記錄檔是以分鐘為單位產生。上線後每秒鐘到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秒。效能一切正常。