1

我们有在 Linux 服务器上运行的 Glassfish 应用程序服务器。每个 Glassfish 安装托管 3 个域。每个域都有一个 JVM 配置,例如 -Xms 1GB 和 -XmX 2GB。这意味着如果所有这三个域都以最大内存运行,服务器应该能够为 JVM 分配总共 6GB

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

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

4

1 回答 1

1

一些经验法则:

  • 你真的希望你的 XmX 和你需要在盒子上不断运行的应用程序(包括操作系统)所需的 RAM 的总和低于你可用的物理 RAM。否则,某些东西会被交换到磁盘上,当那个“东西”需要运行时,事情会大大减慢。如果事情不断进出交换,那么什么都不会执行。

  • 可能可以在某些应用程序服务器上使用较低的 XmX(您的问题似乎暗示您的某些 JVM 分配了太多 RAM)。我相信 Tomcat 可以从低至 64mb 的 XmX 开始,但许多应用程序会在这种设置下很快耗尽内存。调整内存分配和垃圾收集器可能是值得的。坦率地说,我最近对 ​​GC 性能不是很了解(在 4 到 5 年内我不需要调整任何东西来获得不错的性能),所以我不知道这会有多大价值。GC 收集暂停曾经很糟糕,更大的堆意味着更长的暂停......

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

无论如何,答案通常是……您需要运行测试。能够运行压力测试确实非常宝贵,我建议您花一些时间编写并运行它。它将允许您在这件事上做出有根据的决定。

于 2010-06-07T19:18:23.920 回答