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