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