1. 程式人生 > >漫遊測試之效能測試(4.5.效能測試工具中的監控方法)

漫遊測試之效能測試(4.5.效能測試工具中的監控方法)

4.5.1Loadrunner的監控

Loadrunner 的windows監控,在開啟監控之前,需要在遠端機器中啟動以下2個服務。

並同時需要注意一下安全選項的設定。

在Loadrunner Controller中填入要監控的IP,選擇相對應的效能計算數器即可。

刪除預設的,只選擇自己要用的效能計數器。效能計數器不易過多,因為效能計數器其本身是需要通過網路傳輸回來的,過多會佔有一點頻寬,並且也不易於抓重點。建議,當出現某方面瓶頸問題時,根據瓶頸方面細化監控的效能計數器。

監控windows大多數的時候,新增以下效能計算器即可。

新增效能數器後,系統監控就開始了。

Loadrunner利用Rstatd監控linux

下載rstatd後解壓:tar -zxvf rpc.rstatd-4.0.1.tar.gz。

./configure

Make&&make install

可能會遇到以下問題:

[email protected]:/usr/rpc.rstatd-4.0.1# rpc.rstatd

Cannot register service: RPC: Unable to receive; errno = Connection refused

安裝apt-get install nfs-kernel-server

apt-get install portmap

關閉防火牆

/etc/init.d/iptables stop

然後返回Loadrunner同windows一樣進行新增效能計數器

但是出現以下問題:

Monitor name :UNIX Resources. Internal rpc error (error code:2). Machine: 10.170.9.189. Hint: Check that RPC on this machine is up and running. Check that rstat daemon on this machine is up and running (use rpcinfo utility for this verification). Details: RPC: RPC call failed.

RPC-TCP: recv()/recvfrom() failed.

RPC-TCP: Timeout reached. (entry point: Factory::CollectData). [MsgId: MMSG-47197]

根據以下的資料的顯示,Rstatd的方式Loadrunner本身是有問題,推薦使用SiteScope的方式進行監控。

而SiteScope是收費軟體,故推薦linux的使用vmstat即可

4.5.2Jmeter的監控

Jmeter Windows和Linux下的方法相同。

下載圖示外掛後丟入.\lib\ext目錄中,重啟Jmeter即可。

選擇[email protected] Metrics Collector進行伺服器資源監控。

也可以下載plugins-manager.jar直接進行外掛管理的方式進行下載。

更新外掛。

到以下地址下載ServerAgent-2.2.1,在要監控的機器上啟動即可。

新增IP和效能計數器進行選擇,即可(選擇哪些效能計數器,可以引數Loadrunner中的對應的效能計數器)。

報這個錯誤,查詢後說是jmeter版本過高,外掛不支援,需要將jmeter降級到3.1版本。

java.lang.NoSuchMethodError:org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter

更新jmeter和外掛後重新執行即可。注意,選擇的效能計數器要正確,否則可能報以下錯誤。

正確的配置:

4.5.3在linux中批量進行vmstat的監控

呼叫Python的paramiko模組,可以對服務端進行同時命令執行,注意vmstat執行後是後臺執行的,結束監控時需要killall。

主要指令碼程式碼如下:

import paramiko

import threading

def sshCommand(ip, port, username, pwd, commands):

    try:

        client = paramiko.SSHClient()

        client.load_system_host_keys()

        client.set_missing_host_key_policy(paramiko.AutoAddPolicy)

        client.connect(ip, 22, username, pwd, timeout=30, allow_agent=False, look_for_keys=False)

        # client.connect(ip, 22, username, pwd, timeout=30, allow_agent=False)

        for cmd in commands:

            stdin, stdout, stderr = client.exec_command(cmd)

            # stdin.write('Y')

            out = stdout.readlines()

            for outprint in out:

                print '%s' % (ip)

                print outprint

                print '------------------------------------------------\n'

    except Exception, e:

        print('%s:%s Error\n,reason=%s' % (ip, port, e))

    finally:

        client.close()

if __name__ == "__main__":

    orderList = [{'ip': '10.xxx.8.xxxx', 'port': 22, 'username': 'root', 'password': 'xxxxxx', 'cmd': ['vmstat -t 5 > /usr/test.txt ']},{'ip': '10.xxx.138.xxxx', 'port': 22, 'username': 'root', 'password': 'xxxxxx','cmd': ['vmstat -t 5 > /usr/test.txt ']}]

#監控結束時,kill掉程序,讓監控停止

#orderKill = [{'ip': '10.xxx.8.xxxx', 'port': 22, 'username': 'root', 'password': 'xxxxxx', 'cmd': ['killall vmstat']},{'ip': '10.xxx.138.xxxx', 'port': 22, 'username': 'root', 'password': 'xxxxxx','cmd': ['killall vmstat']}]

    for order in orderList:

ssh_connet = threading.Thread(target=sshCommand,

args=[order['ip'], order['port'], order['username'], order['password'],

order['cmd']])

ssh_connet.start()

注意,vmstat生成的文字格式,可以在Excel中匯入,生成Excel的方式,產生資料。

vmstat監控輸出到檔案中的資料,每20行後,有新的標題行在匯入到Excel中前處理時需要刪除這些標題行,可以利用sed命令刪除。

sed -e '/proce/,/r/d' vmstat.txt > movmstat.txt

Vmstat資料格式的處理可以參考這篇文章: