2011-02-26 156 views
0

我試圖拿出一個公式來計算基於從基於以下參數的JTL日誌一些性質的吞吐量(數請求/時間單位):從的JMeter JTL日誌文件計算吞吐量

  • 時間戳(TS)
  • 時間(T)時發送請求
  • 總要求

考慮看看時間戳我不能完全肯定,如果它指的是時間的數,或者在它收到了答覆(我的主要疑點是)。看看這些值,第一種選擇似乎更有可能。因此,假設這,我已經拿出以下內容:

Throughput = (NumRequests/(max(ts + t) - min(ts))) * 1000 

任何人都可以告訴我,如果我對這個嗎?

更新(在此感謝響應@BlackGaff)

的一點是,我要執行我的測試,並在非GUI環境中收集的結果對一些自動化的過程,所以我不能真正使用匯總報告(除非有辦法從命令行運行它)。最小值的使用是嘗試從一組請求中(在相同的測試中)找到ts值。另外,如果我配置採樣器的斜坡週期不是0(所以負載是分佈的),我得到的ts數是不同的。是的,正如您之前已經提到的,我正在有效地尋找第一個樣本的startTime和最後一個樣本的endTime之間的區別。除此之外,我發現在jmeter.properties參數:

# Put the start time stamp in logs instead of the end 
#sampleresult.timestamp.start=true 

所以根據這個參數,看來我也應該改變計算得到的開始和結束時間。

注意:我很好奇如何基於jtl文件計算此值,但如果有人需要從命令行獲取這些數字,請嘗試添加「生成彙總報告」偵聽器,並在jmeter日誌中獲得類似在執行結束下面一行:

2011/03/10 22:31:42 INFO - jmeter.reporters.Summariser: Generate Summary Results = 200 in 9.8s = 20.5/s Avg: 95 Min: 75 Max: 315 Err:  0 (0.00%) 

回答

5

也許是更容易在JMeter的總結報告,打開JTL日誌,其中將計算吞吐量你,然後將其重新保存了呢?

但是,關於這個問題。

目前,您的公式具有時間/請求單位。鑑於你想要的請求/時,你的公式應該是:

Throughput = (NumRequests/(max(ts + t) - min(ts))) * 1000 

我不完全知道爲什麼你使用的最大值和最小值,因爲你只提供一個值,這些函數返回的最大/分鐘從一套。由於TS是相同的值,使用EXCEL,你結束了:

Throughput = (NumRequests/t*1000) 

我相信你真正想要的是第一個樣品的開始時間和結束時間的最後一個樣品)

每之間的區別術語表:

吞吐量計算爲 請求/單位時間。從第一個樣本 開始計算到最後一個樣本結束時的時間爲 。 這包括 樣本之間的任何間隔,因爲它應該是 表示服務器上的負載。 公式爲:吞吐量=(請求數 )/(總時間)。

給予的最終公式:

endTime = lastSampleStartTime + lastSampleLoadTime 
startTime = firstSampleStartTime 
converstion = unit time conversion value 

Throughput = Numrequests/((endTime - startTime)*conversion) 
2

的一點是,我要執行我的測試,並在 收集結果非GUI環境對一些自動化的過程,所以我真的不能 使用匯總報告(除非有辦法從 命令行運行它)。

有。您可以使用JMeter Plugins項目中的CMD工具來生成CSV中的彙總報告。

http://jmeter-plugins.org/wiki/JMeterPluginsCMD/

0

假設你想在20個線程計算吞吐量。以下是要遵循的步驟:

  1. 使用剩餘條目清理jtl文件,僅用於20個線程。用20個線程調用保存該文件。
  2. 使用從時間戳獲取分秒小時以下命令

    awk -F"[, .]" '{print $2}' summary.jtl > tps1 
    
  3. 運行下面的命令獲取的吞吐量/秒

    sort tps1 | uniq -c > tps2