2015-02-24 114 views
6

我正在使用Jmeter將工作負載注入部署在AWS EC2實例上的應用程序。測試必須非常巨大:持續10個小時,工作負載配置文件在5分鐘內具有雙峯形狀,間距約爲2600個請求。實際上,我有一個m3.xlarge實例,其中部署了應用程序,並且每個運行jmeter實例的m3.xlarge實例有8個。使用python腳本,要注入的工作量將在8個客戶端實例之間進行分配,例如,如果原始工作負載爲800個請求,每個jmeter實例將注入100個請求。正如我所說的完整測試持續10小時,並分爲每個5分鐘的時間步長。每5分鐘應用一點工作量變化。實際上,我從每個jmeter實例獲取java.lang.OutOfMemoryError:測試開始後沒有任何請求到達應用程序,立即發出GC overhead overhead exceeded錯誤。我看了很多網上和計算器,我的結論可能的錯誤可能是:Jmeter java.lang.OutOfMemoryError:超出GC開銷限制

  • JMV堆大小太低 - >我解決了設置在每個JMeter的實例jmeter.bat文件如下:

    組HEAP = -Xms4g -Xmx4g

    組NEW = -XX:新尺寸=4克-XX:MaxNewSize =4克

  • 以導致垃圾收集器的繼續無用的使用的代碼一些錯誤。所以我從我的測試中刪除了所有jmeter聽衆。特別是我使用TableVisualizer,ViewResultsFullVisualizer,StatVisualizer和GraphVisualizer。

無論如何,問題仍然存在。我真的不知道如何解決它。我知道10個小時的測試2600音高要求可能是一個非常重的測試,但我認爲應該有一種方法來執行此操作。我使用EC2 m3.xlarge實例,所以我甚至可以將堆大小提高到8G(如果它可能有用),或者將工作負載分散到更多客戶端,因爲我使用的是實例實例,所以我不會付出太多的代價,但因爲我已經將客戶端實例的數量從4個增加到8個,以便解決問題並且不起作用,所以我有點困惑,並且我希望在繼續獲得更多資源之前知道r建議。 預先感謝您。

+0

是的,JMeter是一個臭名昭着的資源狼吞虎嚥。隨着測試會議的進行,肯定會關閉累積數據的所有組件。把它堆在一起。 – 2015-02-24 11:32:15

+0

將jmeter.bat設置中的HEAP和NEW參數修改爲2/4/8g是正確的? – 2015-02-26 14:23:19

+0

'NEW'參數看起來是錯誤的。如果你獲得了OOME,那就意味着有很多* old *對象被保留,而那些'NEW'參數強制JVM將所有對象視爲新對象。這意味着小型GC會很慢。讓JVM動態調整世代的大小通常是最好的選擇。 – 2015-02-26 14:35:03

回答

5

你堆設置看上去是錯誤的: 集HEAP = -Xms4g -Xmx4g 設置NEW = -XX:新尺寸=4克-XX:MaxNewSize =4克

您的新等於堆大小,這是錯誤的。首先評論新的部分。

你可以做ps -eaf | grep java並顯示輸出嗎?

而且還要檢查你尊重這些建議:

最後,說明你啓動線程的測試計劃的概況和數量。

相關問題