用Ngrinder輕鬆進行性能測試

Ngrinder入門

安裝

基礎環境

  • 以 Ngrinder-3.2.3 爲例,建議用 JDK-1.6:java

    mkdir -pv /data/{app,log}
    wget -P /data/log dl.higkoo.com/{jdk1.6.0_45.tgz,ngrinder-controller-3.2.3-with-tomcat.tar.gz,ngrinder-core-3.2.3-agent-package.tar.gz}
    tar -C /data/app -zxvf /data/log/jdk1.6.0_45.tgz
    tar -C /data/app -zxvf /data/log/ngrinder-controller-3.2.3-with-tomcat.tar.gz
    tar -C /data/app -zxvf /data/log/ngrinder-core-3.2.3-agent-package.tar.gz
    ln -s /data/app/jdk1.6.0_45/bin/java /usr/sbin/javanginx

控制檯管理

  • 控制端是 tomcat 啓動的服務(默認端口 8080 / 默認賬號 admin/admin):apache

    export JAVA_HOME=/data/app/jdk1.6.0_45
    /data/app/apache-tomcat-6.0.35/bin/startup.shapi

負載生成器

  • 啓動的第1個參數填控制檯的IP地址或域名tomcat

    export JAVA_HOME=/data/app/jdk1.6.0_45
    /data/app/ngrinder-core-3.2.3/run_agent_bg.sh 192.168.10.31服務器

編寫測試腳本

  • 以下腳本爲經常使用 GET、POST 帶參數和自定義HTTP頭的方法:

示例腳本

private static final String URL = "http://api.higkoo.com:9080/status";// 請求使用的URL
private static final NVPair[] PARAMS = [
	new NVPair("color", "Magic"),
	new NVPair("expect", "Miracle"),
] as NVPair[]; // 請求的參數列表
private static final NVPair[] HEADERS = [ 
	new NVPair("Cookie", "date=20151128;path=/"),
	new NVPair("User-Agent", "nGrinder"),
] as NVPair[];// 自定義頭信息
@Test
public void test(){
	HTTPResponse result = request.GET(URL, PARAMS, HEADERS) // request.POST(URL, PARAMS, HEADERS)
	if (result.statusCode == 301 || result.statusCode == 302) {
		grinder.logger.warn("Warning. The response code was {}.", result.statusCode); 
	} else {
		assertThat(result.statusCode, is(200));
	}
}

執行壓測

  • 測試過程要對和個服務器的資源使用狀況有所瞭解,下圖展現過程當中 控制端、被測試的服務端,以及可愛的肉雞的 top圖:

資源使用圖

  • 不斷增長虛擬用戶數(15臺24核32G的服務器),結果以下:

測試結果

  1. 本次測試以nginx狀態頁爲例
  2. 虛擬用戶乘10倍增長,響應時間幾乎也同級增長
  3. 然而虛擬用戶數增長,每秒響應請求數並無質的增長
  4. 當虛擬用戶數過6萬時,服務器出現拒絕訪問

[Sat Nov 28 19:04:46 2015] TCP: TCP: Possible SYN flooding on port 80. Sending cookies. Check SNMP counters.cookie

附加信息

  • 然而 LoadRunner 並不支持 Debian 系統:

LoadRunner安裝

相關文章
相關標籤/搜索