Jenkins + JMeter 監控系統預防Performance低落風險

姜志民 2019/08/10 22:27:50
1869

Jenkins + JMeter 監控系統預防Performance低落風險


簡介

將Performance測試與Jenkins進行整合,若在新增新功能或修復產品錯誤時候,可以預防Performance下降的風險,讓我們提早發現問題立即修正。 例如:Jenkins定期每天執行Performance測試,若今天修復一個bug,卻不經意間導致response times超過可接受範圍時,當天Jenkins就會出現黃色圖示並發mail給開發人員,開發人員就可以馬上警覺到可能是上述修復的bug有問題而造成response times過久。 若沒有進行Performance測試,可能需要等到一段時間之後,等到用戶抱怨系統太慢,開發人員又要花費很多時間查出是甚麼原因造成的。

作者

姜志民


一、撰寫Jmeter測試response time腳本

 a.到https://jmeter.apache.org下載Apache JMeter 4.0。
 
 b.「執行緒數量」為100是表示模擬100人登入網頁。「啟動延遲」為25是表示100人會在25秒內隨機執行。
 
 
c.會以Thinkpower昕力資訊官網與昕力大學為測試對象。下圖是Thinkpower昕力資訊官網的測試設定。
 
 
d.下圖是昕力大學的測試設定。
 
 
c. 下圖是測試response time腳本,當response time超過800ms就會UNSTABLE,然後並存成thinkpower.jmx檔案腳本。
 

二、Jenkins安裝plugin

 Jmeter執行完成後,會產生jtl檔案。Jenkins必須安裝plugin來解析jtl檔案並產生報表,安裝套件如下。
 

三、Pipeline腳本

node {
	stage("run"){
	    
	    //刪除之前測試結果
	    deleteDir()

		//apache-jmeter目錄
		env.JMETER_HOME="C:\\Program Files\\apache-jmeter-4.0"

		//使用Jmeter並讀取thinkpower.jmx腳本進行Performance測試
		bat " \"C:\\Program Files\\apache-jmeter-4.0\\bin\\jmeter.bat\" -Jjmeter.save.saveservice.output_format=xml -n -t D:\\thinkpower.jmx -l thinkpower.jtl "

		//產生Jmeter報表,如果average response time超過JMeter中BeanShell Listener的設定,就編譯失敗或是不穩定的圖示。
		perfReport errorFailedThreshold: 100, errorUnstableThreshold: 49, percentiles: '0,50,90,100', sourceDataFiles:'thinkpower.jtl'
		
		//若response time超過指定的數值,就會發mail通知管理者
		if (currentBuild.currentResult=='UNSTABLE') {
	      	  def mailList="jhihmin.jiang@thinkpower.com.tw";
              def subject='系統警告-Performance低落風險';
        	  def body="<font size='23'>Performance低落風險</font>";
        	  emailext body: "${body}", subject: "${subject}", to: "${mailList}",mimeType: 'text/html';
		}
	}
}
 

四、建立Pipeline專案

 a.專案類型如下。
 
 
 
b.將「Pipeline腳本」貼到Script內,在按下儲存。
 
 
c. 然後在按下「馬上建置」。
 

五、Performance報表

 
a. 建置完成後,進入「Performance Trend」連結。
 
 
b. 進入「Last Report」連結。
 
 
c.可以看到Thinkpower昕力資訊官網與昕力大學相關測試數據。進入「載入 Thinkpower 昕力資訊 官網」連結。
 
 
d.可以看到「載入 Thinkpower 昕力資訊 官網」更詳細的測試資訊。
 

六、response time超過800ms系統圖示警告

 
Performance的response time在800ms之內就會是藍色圖示,若超過800ms就會是黃色圖示。
 

七、Jenkins寄送Performance低落風險mail

 
若超過設定的response time就會寄送mail,如下圖。
 
姜志民