簡體   English   中英

JMeter 因“檢索所有嵌入式資源”而變慢 - 如何擴展?

[英]JMeter slow with "Retrieve all embedded resources" - how do I scale?

TLDR:

  • JMeter 如果我 select “檢索所有嵌入的資源”,則僅使用 1 個測試用戶進行爬網。
  • JMeter throws Uncaught Exception java.lang.OutOfMemoryError: Java heap space in thread Thread如果我測試 100 個用戶
  • 如何最終擴展以測試成千上萬的用戶?

更多細節:

我正在使用 BlazeMeter Chrome 擴展程序錄制 jmx 腳本。 用戶登錄並完成課程和測試。 一路上有很多 ajax 請求。 腳本大約有 350 - 400 個步驟。 大多數 ajax POST 請求具有 json 響應。

當我在 Chrome 中手動點擊時,網站加載速度很快。 也許頁面加載最多需要 2 秒。

但是當我將該腳本導入 JMeter 並將“檢索所有嵌入式資源”和“並行下載”設置為 6 並運行它時(在最初只有 1 個用戶的 GUI 中),它將快速完成,比如說,7 個步驟,然后掛起,有時會掛起 10 分鍾以上,然后再進入下一步。 如果我取消選中“檢索所有嵌入式資源”,則不會發生這種情況,但我不想這樣做,因為那不是一個現實的測試。

如果我進行相同的測試並與 100 個用戶一起運行它(從命令行使用JVM_ARGS='-Xms4096m -Xmx4096m' sh jmeter -n -t myfolder/mytest.jmx -l myfolder/testresults.jtl ),我得到Uncaught Exception java.lang.OutOfMemoryError: Java heap space in thread Thread和我的電腦風扇發瘋了。

我有一個 HTTP 緩存管理器,配置為僅選中“處理 GET 請求時使用緩存控制/過期 header”,並且我已將“緩存中的最大元素數降低到 10,因為這是我可以運行測試的唯一方法根本。

理想情況下,我想一次測試數千個用戶,但如果我不能可靠地測試 100 個用戶,我不明白我應該如何擴展到數千個。

我看到還有其他基於雲的測試選項,現在我已經嘗試了一些,但是在配置如何測試登錄用戶時我總是停頓下來。 似乎大多數解決方案都不支持這一點。

感覺就像很多人過去應該遇到過的事情,但我發現幾乎沒有人遇到過這些問題。 在 web 應用程序上對數千個登錄用戶進行負載測試的正確方法是什么?

  1. 如果 JMeter 在檢索嵌入式資源時“掛起”10 分鍾,則此特定資源存在問題,您可以使用 ie 查看結果樹偵聽器查看每個資源的響應時間,並針對此特定“慢速”組件提出錯誤或排除它來自 scope 使用HTTP Request Defaults 您還可以在那里指定超時,如果請求不會在給定的時間范圍內返回響應 - 它將被標記為失敗,因此您不必等待 10 分鍾:

    在此處輸入圖像描述

  2. 您增加堆的方式是正確的,看起來 4Gb 是不夠的,您要么必須提供更多,要么考慮切換到分布式測試

  3. 確保在任何情況下都遵循JMeter 最佳實踐 如果您的“計算機風扇發瘋”,則意味着 CPU 使用率非常高,因此 JMeter 很可能無法足夠快地發送請求,因此您會得到假陰性結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM