2010-08-20 128 views
28
  1. 請您告訴我最大限制爲no。線程,我可以使用JMeter 2.4進行負載測試?JMeter max。線程限制

  2. 在採用單個循環中的所有線程還是採用更少的否,有任何區別。的線程和初始化循環來實現相同的編號。用戶/線程?

實施例:

No. of threads=500 
Ramp up=1000 
Loop=1 

無論是相同

No. of threads=50 
Ramp up=100 
Loop=10 

或是否有在結果方面的任何差異?

+4

好問題應該選擇一個答案! – tgkprog 2013-10-03 16:48:33

回答

20
  1. 線程的最大數量是由很多因素決定的,看到這個答案https://stackoverflow.com/a/11922239/460802

  2. 有一個在你提出什麼大的差別。

    • 「500個線程,循環1」意味着500個線程在同一時間循環一次。
    • 「50個線程,循環10」意味着只有50個線程在同一時間循環十次。

理論上你會得到相同數量的結果(500),但你打在一個非常不同的方式服務器。

9

最大用戶數取決於您的操作系統,可用RAM和連接。 Win XP同時限制在3000個進程中。在Linux上超過3000,但我沒有多少。要小心測試服務器,並且如果在機器上啓動3000線程需要大量資源,並且測試不會是真實的。我優先考慮每臺機器啓動最多300個用戶。如果你想增加用戶數量比使用分佈式測試(使用更多的機器作爲DoS攻擊)。 理論上是相同數量的請求,但時間複雜度是不一樣的。

5

1:當然這取決於運行JMeter的機器,但如果里程數我可以給你一些提示。 JMeter允許您在同一個框中運行多個進程,並且通常非常可靠,每個JMeter實例最多可以生成200個線程。如果你需要更多,我建議使用多個JMeter實例。一個調整了一些現代機器可以輕鬆生成500到1000個線程。使用Linux,您可能需要增加文件描述符的最大數量(see here)。

在沒有GUI的情況下運行JMeter會很有幫助,將文件中的報告/圖形數據寫入稍後要呈現的文件中。您還必須注意您的網絡限制。 Gbps網絡中的服務器很容易產生數千個請求,但共享54 Mbps路由器的筆記本電腦將更加有限。嘗試按照請求的大小將實際連接與服務器分開,然後您將知道帶寬是否會限制您的工作。要特別注意JMeter的配置,以下載或不在HTML響應中引用的文件。

希望我能夠提供幫助。

2:這正是BlackGaff解釋的: 「500個線程,循環1」意味着500個線程在同一時間循環一次。 「50個線程,循環10」意味着在同一時間只有50個線程循環十次。

0
  1. 我不認爲如果您的機器可以處理它,JMeter本身沒有任何線程限制。測試的基本思想應該是,線程切換和等待時間不應該太多地影響實際性能指標。

  2. 這兩種情況有很大的區別。在第一種情況下,最糟糕的情況是,您將有500個併發用戶。在第二種情況下,併發用戶的最大數量將是50.場景1的平均時間會比平均時間的情況大2

5

這是堅持在這裏很常見的創建方案後,和測試用例,我們需要使用JMeter運行,並且我們必須修復JMeter Thread Group中允許使用多少用戶或線程的值。我們不想限制我們的負載生成器或我們的JMeter實例。所以基本上,在這兩種情況下都需要調整。否則,測試的輸出將毫無價值,我們將失去數小時的時間。因此,這裏有我們需要考慮的事情: -

  • JMeter的是否與JVM運行的Java工具。爲了獲得最大的能力,我們需要execution.First過程中提供最大的資源JMeter的,我們需要增加堆大小(內部JMeter的bin目錄中,我們得到jmeter.bat/SH)
HEAP=-Xms512m –Xmx512m 

這意味着默認分配的堆大小最小爲512MB,最大爲512MB。根據您自己的PC配置進行配置。請記住,操作系統也需要一些內存,所以不要分配你所有的物理內存。

  • 然後,添加存儲器分配速率

NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

這意味着存儲器將在該速率增加。你應該小心,因爲如果你的負載一開始就很高,這可能需要增加。請記住,如果範圍過寬,它會將JVM內部的堆空間碎片化。如果是這樣,垃圾收集器需要更努力地清理。

  • JMeter是Java GUI應用程序。它還具有資源密集度較低的非GUI版本(CPU/RAM)。如果我們在非GUI模式中運行JMeter,它將消耗更少的資源,並且我們可以運行更多的線程。

  • 禁用所有聽衆:在測試運行期間。它們僅用於調試並使用它們來設計所需的腳本。

聽衆應當在負載測試被禁用。啓用它們會導致額外的開銷,這消耗了測試中更重要元素所需的寶貴資源。

  • 始終嘗試使用截至到最新的軟件。保持您的Java和JMeter更新。

  • 不要忘記,當涉及到存儲請求和響應頭時,斷言結果和響應數據會消耗大量內存!所以儘量不要在JMeter上存儲這些值,除非它是絕對必要的。

因此,在總結,如果沒有監聽器都包含在JMeter的腳本,運行JMeter的服務器,網絡開銷/障礙和JMeter的腳本內沒有監控優化那麼這裏是一個粗略的計算:

The total number of concurrent user = (total allocable memory)/(Size of all requests)

你必須估計你併發用戶數/線程(活動線程)只之三您的負載情況的毫秒數。

此外,您還需要監控是否您的服務器Memory consumptionCPU usages運行低於80%與否。如果這些用法超過80%,則認爲這些測試作爲報告不可靠。

爲了更好,更詳細地瞭解這兩個博客How many users JMeter can support?9 Easy Solutions for a JMeter Load Test 「Out of Memory」 Failure必須幫助。

+0

@Adnan的答案是最好的答案),但作爲參考,我在AWS的m4.2xlarge上運行了1000個併發線程,而沒有出現任何問題。 – 2017-08-21 19:22:35