【问题标题】:Running tomcat with -server JVM option使用 -server JVM 选项运行 tomcat
【发布时间】:2011-04-13 04:40:26
【问题描述】:

我正在使用 -server jvm 选项测试我的 tomcat 服务器 4。我的 JDK 在 FreeBSD 上是 1.5。

我没有发现任何明显的差异或任何问题。如果我要在我的 prod 系统上打开此选项,我可以期待什么样的改进以及我应该注意什么样的问题?

我看过What's the effect of -server option for the HotSpot JVM?,但没有详细讨论这个。

【问题讨论】:

  • 建议:使用tomcat 6和JDK 6。
  • @Harry Joy - 我希望我能:(

标签: java performance tomcat jvm


【解决方案1】:

JVM 很可能已经在服务器模式下运行。对于 Linux 上的 JDK 5/6,JVM 将在服务器级机器上默认为服务器模式:

“[...] 服务器级机器的定义是一台至少有 2 个 CPU 和至少 2GB 物理内存的机器。”

这已记录在 here(对于 Java 6,here)。

没有详细说明 FreeBsd 上发生了什么,但我希望 FreeBsd JVM 是仅服务器模式,或者它们在服务器级机器上默认为服务器模式,就像 Linux 一样。

【讨论】:

【解决方案2】:

诀窍在于现代 JVM 可以“自动检测”类似服务器的机器。因此,如果您不指定 -server-client,JVM1.5+ 将选择最佳方法 - 即使您不使用该属性,它也可能会在服务器模式下运行。

在这种情况下,如果使用 -client 选项启动 JVM,您可能会注意到不同之处。

参考

【讨论】:

    【解决方案3】:

    服务器模式的第一个区别是开启了Parallel GC,它是一个吞吐量垃圾收集器,推荐用于多核机器。一般来说,它会缩短垃圾收集的延迟时间。

    其次,服务器模式将在 JIT 中使用更积极的优化。

    我认为服务器模式是生产机器上必须具备的。

    我建议您切换到 1.6 JVM,因为它具有更好的 gc 实现和更好的优化。

    【讨论】:

      【解决方案4】:

      OTN website 讨论了差异。我们很少在任何生产系统中使用默认参数(GC 收集算法、堆大小等),因此它不会提供太大的提升。

      在实现此参数后,您无需注意任何具体的事情,但如果您发现 -server 和 -client 之间存在差异,则 JIT 编译器始终是一个不错的起点。

      【讨论】:

        【解决方案5】:

        由于垃圾收集和其他参数的不同,您会注意到长期的差异。

        【讨论】:

        • 呃……他没有。这就是他的问题所在。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 2020-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多