2010-06-07 34 views
1

我们有在Linux服务器上运行的Glassfish应用服务器。 每个Glassfish安装包含3个域。每个域都有一个JVM配置,如-Xms 1GB和-XmX 2GB。这意味着,如果所有这三个域都运行在最大内存,服务器应该能够分配总共6GB的JVM应用程序服务器(Java):应该向服务器添加RAM取决于每个域的-Xmx值?

有了这个数学,我们的每台服务器有8GB内存(2 GB缓冲区) 首先 - 是这是一个好方法?我不这么认为,因为当我们分析这台服务器在过去几个月的内存使用率时,它只有1GB;

现在有请求为这些服务器添加一个额外的域 - 这是否意味着为了安全或基于趋势添加额外的2 GB RAM,继续使用服务器的任何内存?

回答

1

几条经验法则:

  • 你真的想你XmXs之和比你更低的需要,你需要包装盒上的不断运行的应用程序(包括操作系统)的RAM物理RAM可用。否则,某些东西会被交换到磁盘上,当这些“东西”需要运行时,事情会显着减慢。如果事情不断进出,那么什么都不会执行。

  • 可能能够在某些应用程序服务器上使用较低的XmX(您的问题似乎意味着某些JVM分配了太多RAM)。我相信Tomcat可以从少至64MB的XmX开始,但许多应用程序在安装时会很快耗尽内存。调整你的内存分配和垃圾回收器可能是值得的。坦率地说,我最近对GC的表现并不十分熟悉(我没有必要调整任何东西以在4-5年内获得体面的表现),所以我不知道这会有多么宝贵。 GC采集暂停过去是不好的,而更大的堆意味着更长的暂停...

  • 您备用的任何内存都不会“浪费”。操作系统会将它用于磁盘缓存,这可能是一个好处。

无论如何,答案通常是......您需要运行测试。能够进行压力测试是非常宝贵的,我建议你花一些时间写一个并运行它。它可以让你在这件事上做出明智的决定。

相关问题