2017-07-17 98 views
1

我有幾個應用程序在Glassfish應用程序服務器(4.0)上運行。我已經用DataDog記錄了一些java內存使用情況的統計信息,所以我能夠看到已使用的堆內存的歷史記錄以及最初的和最大的恆定的堆大小。服務器上的初始和最大建議堆大小

Initial, maximum and real heap values 該圖顯示了初始(黃色),最大(藍色)和真實(紫色)堆值。如上所述,真正的堆大小始終低於初始堆值,所以我打算移動這些參數來提高服務器的性能,但我不確定這是否真的有必要。

所以,我有這樣的疑惑:

  1. 值得一修改堆參數?
  2. 如果是這樣,哪個參數一般是正確的? (例如:初始值比平均實際堆值高100 mb,最大值是該數值的兩倍)。

我想這個問題可以說明tomcat,JBoss或任何面向servlet的服務器。

任何幫助將受到感謝。

回答

1

這取決於。此外,您的圖片不會顯示爲我的答案。

如果你的機器是超級內存餓,你是一個沒有無限收入的個人,我認爲你的方法會很好。我會建議以稍高的任意百分比開始,比如50%,以提供一點回旋空間​​。繼續分析內存使用情況並相應地調整最大值。我沒有看到任何理由將內存使用設置爲默認值以下。

否則,如果您的應用程序出現突然的重負載,您可能會更加無所事事,並提供100-200%的額外內存。

+0

對不起,我添加了圖像。 – McSonk

+0

好的,所以你的內存使用量似乎遠低於你的最大值,但是據我所知,標準值通常是2的倍數。所以512MB是我的建議,除非你真的需要一次處理很多請求/負載,這種情況下,我將它設置爲1024MB。保持最小值。 –