2017-07-17 75 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。保持最小值。 –