【问题标题】:Application Servers(java) : Should adding RAM to server depend on each domain's -Xmx value?应用程序服务器(java):向服务器添加 RAM 是否应该取决于每个域的 -Xmx 值?
【发布时间】:2010-06-07 18:49:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: java memory glassfish application-server


    【解决方案1】:

    一些经验法则:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 2016-06-02
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多