我们在Linux服务器上运行Glassfish应用程序服务器。 每个Glassfish安装都包含3个域。每个域都有一个JVM配置,例如-Xms 1GB和-XmX 2GB。这意味着如果所有这三个域都以最大内存运行,那么服务器应该能够为JVM分配总共6GB
通过该数学计算,我们的每台服务器都有8GB RAM(2 GB缓冲区) 首先 - 这是一个好方法吗?我不是这么认为的,因为当我们分析过去几个月在这台服务器上的内存利用率时,它只有1GB;
现在有人要求为这些服务器添加一个额外的域 - 这是否意味着添加额外的2 GB RAM只是为了安全或基于趋势,继续使用服务器的任何内存?
答案 0 :(得分:1)
一些经验法则:
您真的希望您需要在盒子上运行的应用程序所需的XmX和RAM总和(包括操作系统)低于您可用的物理RAM。否则,某些东西将被交换到磁盘,当需要运行“某些东西”时,事情会急剧减慢。如果事情不断地进出交换,那么什么都不会发生。
您可能能够在某些应用程序服务器上使用较低的XmX(您的问题似乎暗示您的某些JVM分配了太多RAM)。我相信Tomcat可以从64mb的XmX开始,但许多应用程序将很快耗尽内存。调整内存分配和垃圾收集器可能是值得的。坦率地说,我最近对GC的表现并不是很了解(我没有必要调整任何东西以在4 - 5年内获得不错的表现),所以我不知道它有多么有价值。 GC收集暂停曾经是糟糕的,更大的堆意味着更长的停顿......
您备用的任何内存都不会“浪费”。操作系统会将其用于磁盘缓存,这可能是一个好处。
无论如何,答案通常都是......你需要进行测试。能够进行压力测试是非常宝贵的,我建议你花一些时间写一个并运行它。它可以让你在这件事上做出有根据的决定。