【问题标题】:ColdFusion Garbage CollectionColdFusion 垃圾收集器
【发布时间】:2013-11-27 21:46:08
【问题描述】:

我们在循环负载平衡器上有 6 个 Windows Server 2008/IIS 7.5 ColdFusion 9.0.2 服务器。每个服务器分配 2GB 用于 ColdFusion。服务器总共有 6GB 内存。垃圾收集似乎是所有服务器的一个问题,但我不确定如何在不回收 ColdFusion 的情况下解决这个问题。

下图是过去几天我们 6 台服务器的 AVG/MAX 内存。 AVG 内存每天都在增加。最终,服务器开始排队请求(因为它们无法足够快地处理它们),我们别无选择,只能回收。

图表中的数据取自 FusionReactor 所有 6 台服务器的 100 万张快照。

我们的服务器在 jvm.config 中为 ColdFusion 使用以下命令行:

java.args=-Xmx2G -server -Xms2g -Dsun.io.useCanonCaches=false -XX:MaxPermSize=192m -XX:+UseParallelGC -Xbatch -Dcoldfusion.rootDir={application.home}/ -Djava.security.policy={application.home}/servers/cfusion/cfusion-ear/cfusion-war/WEB -INF/cfusion/lib/coldfusion.policy -Djava.security.auth.policy={application.home}/servers/cfusion/cfusion-ear/cfusion-war/WEB-INF/cfusion/lib/neo_jaas.policy

我不确定更改垃圾收集参数是否是解决方案,我对 GC 尤其是与 ColdFusion 相关的内容一无所知。

我知道这可能与网站上的代码有关。它是一个门户(类似于 fusebox),在其中托管了许多不同的应用程序。门户中 cfobject 调用的用途并不多。

【问题讨论】:

标签: java iis-7 coldfusion garbage-collection windows-server-2008


【解决方案1】:

这类似于这个问题:Coldfusion OutOfMemoryError (CF9/Wheels)

但让我强调一下与此相关的内容:

  1. 确保您至少使用 CF 9.01hf4 或 9.02hf1 并在 Java 上运行 ColdFusion(请参阅 ColdFusion 9.01 on Java 7

  2. 提高 `-XX:MaxPermSize=512m

  3. 使用-XX:+G1GC(见Is JDK 6u14 Garbage First (G1) garbage collector, suitable for JRun?

  4. 让JVM可以使用4GB

  5. 每 100 到 1000 次迭代执行一次强烈建议的垃圾收集

  6. 让你的函数静默

  7. 确保函数中的变量范围为varlocal

  8. 考虑 ORM

【讨论】:

    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 2011-11-07
    • 2013-04-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多