【问题标题】:Java heap space Xmx Xms on a vServer with burstable RAM具有可爆 RAM 的 vServer 上的 Java 堆空间 Xmx Xms
【发布时间】:2011-08-02 20:23:23
【问题描述】:

我们在具有 1GB 保证 RAM 和 4GB 可突增 RAM 的 vServer 上运行依赖于 Java 的 Minecraft 服务器。

我们运行 Debian 6.0 (Squeeze) Minimal (64Bit),带有一个带有 php/mySQL 的 lighttpd 网络服务器以及实际的 Minecraft 服务器。我们目前已将所有内容设置为保持在 1GB 保证 RAM 内,但似乎我们没有以这种方式利用可爆 RAM,也不知道应该如何(以及是否?)我们应该这样做。

我们目前正在使用以下字符串加载我们的服务器:

 /opt/java/jre/bin/java -Xmx880M -Xms880M
                        -XX:+UseConcMarkSweepGC
                        -XX:+CMSIncrementalPacing
                        -XX:ParallelGCThreads=2
                        -XX:+AggressiveOpts
                        -jar craftbukkit.jar nogui

我们为 minecraft 分配了 880M(我们认为?),其余的保留给系统、网络服务器等。我们如何优化这个设置?将这个初始启动分配到 1GB 上并很好地分配到我们的可爆 RAM 中是否有意义? Java 或系统有没有办法自己处理这个问题,比如在高峰时间需要时分配超过 880M,最大为 4GB?由于无法保证可爆 RAM,如果它在需要时不可用,会发生什么情况?谢谢!

【问题讨论】:

    标签: java performance jvm-arguments minecraft


    【解决方案1】:

    我们如何优化这个设置?

    这取决于。您应该首先分析此进程的内存使用情况。添加

    -verbose:gc:file=gc_results.out

    到你的命令行。您可以使用HPjmeter 之类的工具打开生成的 gc 数据文件。您应该根据平均/峰值内存使用情况调整堆。没有一种尺寸适合所有“最佳”政策。首先,检查您平均花费在垃圾收集上的时间。一个好的经验法则是

    【讨论】:

    • 老实说:我从未听说过 GC,也不知道它是什么。
    • GC 是垃圾回收。 Java 有一个自动内存管理模型。
    • 我也无法控制在其上运行的实际进程(我的世界服务器),我也不知道它如何处理对象等的确切技术细节。不需要一直满880M,内存使用似乎会根据在线玩家的数量而波动,并且在负载和使用量很大的情况下会达到峰值。如果它达到峰值并且没有足够的内存,我的世界服务器将简单地崩溃。问题是我们目前的设置无法达到超过 880 的峰值,即使足够多的可爆 RAM 应该允许我们处理这些峰值。
    • 你如何添加命令行选项: -Xmx880M -Xms880M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=2 -XX:+AggressiveOpts 但是你这样做,添加我给你的选项,让服务器运行一段时间,然后收集输出文件并分析它。你所做的任何其他事情都是完全猜想。
    【解决方案2】:

    服务器将花费大部分时间来占用分配的最大 RAM。我对“突发” RAM 的理解是——不要指望它,但如果你短暂需要它,它可能不会崩溃。在这种情况下,您不希望 JVM 挂在可爆 RAM 上。您指定的配置似乎正确。

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 2011-11-02
      • 2015-07-07
      • 2011-01-15
      • 1970-01-01
      相关资源
      最近更新 更多