性能測試之JMeter遠程模式
作者:
網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:
[ 2016/9/14 13:50:29 ] 推薦標簽:
性能測試工具 Jmeter
使用不同的端口號
默認情況下,JMeter使用標準RMI的端口 1099 。是可以改變的。為了達到這個目的,下面所有的都是執(zhí)行:
· 在服務(wù)器上,使用新的端口號來啟動 rmiregistry
· 在服務(wù)器上,使用服務(wù)器定義的端口號來啟動 JMeter
· 在客戶端上,更新 remote_hosts 屬性包括新的 host:port 設(shè)置
自JMeter2.1.1版本后,JMeter服務(wù)端腳本提供支持變更端口。比如,假設(shè)你想使用 1664 ( 1099 已被占用)
在Windows電腦中(命令行)
C:JMETER>SETSERVER_PORT=1664
C:JMETER> JMETER-SERVER [other options]
在Unix電腦中
$SERVER_PORT=1664jmeter-server [otheroptions]
[環(huán)境變量使用大寫字母]
在上面兩種情況下,在特殊的端口使用腳本啟動 rmiregistry ,接著通過已經(jīng)定義的 server_port 屬性在服務(wù)端啟動JMeter。
可選端口號將會被輸出在服務(wù)器的 jmeter.log 文件中( rmiregistry 不會創(chuàng)建日志文件)。
使用不同的測試樣例
在測試計劃中,監(jiān)聽器發(fā)送他們的結(jié)果至默認的JMeter客戶端。通過情況下,樣例結(jié)果將會在生成的時候同時返回。這個將會影響服務(wù)器的大吞吐量;樣例結(jié)果在線程繼續(xù)時必須返回所有的結(jié)果。有一些JMeter屬性可以改變這個功能。
mode
樣例發(fā)送模式-在2.9版本默認采用是 StrippedBatch。這個將會被發(fā)送至客戶端結(jié)點。
· Standard : 在生成樣例后即發(fā)送結(jié)果
· Hold : 保存樣例至數(shù)組中直到運行結(jié)束。這個將會使用大量的內(nèi)存在服務(wù)器端,不推薦使用。
· DiskStore : 存儲樣例在磁盤文件中( java.io.temp 文件夾下)直到運行結(jié)束。JVM退出時,這個文件將會被刪除。
· StrippedDiskStore : 從返回數(shù)據(jù)中刪除成功的數(shù)據(jù),并使用 DiskStore 發(fā)送
· Batch : 發(fā)送保存的樣例當(dāng)數(shù)量( num_sample_threshold )或時間( time_threshold )達到一個閥值,在這個閥點時將同步發(fā)送樣例。這個值可以在服務(wù)器的下列屬性中配制:
· num_sample_threshold : 樣例累積數(shù),默認 100
· time_threshold : 時間值,默認是 60000毫秒 = 60秒
異步模式的使用,在下面。
· Statistical : 發(fā)送概要樣例當(dāng)數(shù)量或時間達到閥值。樣例將被歸整通過線程組名和樣例標簽。下面是可以歸整的屬性:
elapsed time
latency
bytes
sample count
error count
· Stripped : 從返回數(shù)據(jù)中刪除成功的樣例
· StrippedBatch : 從返回數(shù)據(jù)中刪除成功的樣例,并使用 Batch 發(fā)送
· Asynch : 樣例被臨時存儲在本地隊列中。一個單獨的工作線程發(fā)送樣例。這樣不需要測試線程等待結(jié)果發(fā)送至客戶端。然而,如果線程的創(chuàng)建速度比發(fā)送速度快,消息隊列將會終被填滿,樣例線程會被堵塞直到樣例被從隊列中清理完全。這個模式比較適用于平滑的樣例測試。消息隊列的大小可以在服務(wù)器端調(diào)節(jié)通過JMeter的屬性 asynch.batch.queue.size (默認 100 )。
· StrippedAsynch : 從返回數(shù)據(jù)中刪除成功的樣例,并使用 Asynch 發(fā)送
· Custom implementation : 配制模式參數(shù)至你的自定義樣例類名中。這個必須繼承接口 SampleSender 并且有一個獨立參數(shù)類型為 RemoteSampleListener 的構(gòu)造方法。
Stripped`模式會包括`responseData`流,因此一些元素前置`responseData`將能正常工作。
這不是真正的問題,將會有更有效的方法來增加這個特性。
下面的屬性應(yīng)用于 Batch 和 Statistical 模式:
num_sample_threshold設(shè)置的樣例數(shù)(默認為 100 )
time_threshold設(shè)置時間值(默認 60秒 )
處理節(jié)點啟動失敗
針對大數(shù)量級的測試,有一種情況是部分遠程服務(wù)會不可用或無法啟動。比如,當(dāng)你使用自動化腳本來定位大量的云機器并使用作為并發(fā)機器,一些請求機器也許會失敗因為一些云的問題。自JMeter2.13后,有一些新的屬性來控制這種行為。
首先,你應(yīng)該嘗試重試初始化在那些僅是因為延時啟動。為了確保重試,你應(yīng)該設(shè)置 client.tries 屬性來設(shè)置總的嘗試次數(shù)。默認情況下僅會嘗試一次。為了控制重試延遲,設(shè)置 client.retries_delay 屬性來控制在等待嘗試的時間間隔(毫秒)。
后,你應(yīng)該繼續(xù)運行使用這些并發(fā)機器測試,并成功初始化且跳過失敗的節(jié)點。為了使這個可用,設(shè)置 client.continue_on_fail=true 屬性。