3

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

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

Data taken at 1m intervals across all 6 servers.

在曲线图中的数据是从所有6个服务器FusionReactor的1米快照取。

我们的服务器使用下面的命令行中jvm.config针对ColdFusion:

java.args = -Xmx2G -server -Xms2g -Dsun.io.useCanonCaches =假 -XX:MaxPermSize参数=192米-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相关。

我知道这可能与网站上的代码有关。它是一个门户(像熔断器一样),它承载着许多不同的应用程序。门户中没有多种cfobject调用的用法。

+0

您是否使用了很多CFHTTP调用?你可能想看看 - http:// stackoverflow。com/questions/14777292/coldfusion-jvm-garbage-collection-not –

+0

@BrianHoover我们确实使用了很多CFHTTP调用。非常感谢链接! – Brad

回答

0

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

但我要强调,为了这个相关的那些:

  1. 确保你至少CF 9.01hf4或9.02hf1和运行基于Java的ColdFusion(见ColdFusion 9.01 on Java 7

  2. 跳车了`-XX:MaxPermSize参数=512米

  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