Adi*_*lik 2 coldfusion coldfusion-8
我正面临着严重的ColdFusion Server崩溃问题.我在该服务器上有许多实时站点,因此这是严肃而紧迫的.
Windows Server 2003 R2,Enterprise X64 Edition,Service Pack 2 ColdFusion(8,0,1,195765)企业版
Intel(R)Xeon(R)CPU E7320 @ 2.13 GHZ,2.13 GHZ 31.9 GB RAM
它在每小时的基础上崩溃.有人可以帮我找出确切的问题吗?我试图通过ColdFusion日志文件找到它但我在那里找不到任何东西.每次崩溃时,我都必须重置ColdFusion服务才能恢复.
当我看到运行时日志文件"ColdFusion-out165.log"时,我发现以下错误
error ROOT CAUSE:
java.lang.OutOfMemoryError: Java heap space
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: Java heap space
04/18 16:19:44 error ROOT CAUSE:
java.lang.OutOfMemoryError: GC overhead limit exceeded
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: GC overhead limit exceeded
Run Code Online (Sandbox Code Playgroud)
以下是我当前的JVM设置:

正如您所看到的,我的JVM设置是
最小JVM堆大小(MB):512
最大JVM堆大小(MB):1024
JVM参数
-server -Dsun.io.useCanonCaches=false -XX:MaxPermSize=512m -XX:+UseParallelGC -Dcoldfusion.rootDir={application.home}/../ -Dcoldfusion.libPath={application.home}/../lib
Run Code Online (Sandbox Code Playgroud)
注意: - 当我尝试将最大JVM堆大小增加到1536并尝试重置coldfusion服务时,它不允许我启动它们并给出以下错误.
"Windows无法在本地计算机上启动ColdFusion MX Application Server.有关详细信息,请查看系统事件日志.如果这是非Microsoft服务,请与服务供应商联系,并参阅服务特定的错误代码2".
我应该无法将最大堆大小设置为1.8 GB,因为我使用的是64位操作系统.不是吗?
您可以为JVM提供多少内存取决于JVM的内存,而不是您的操作系统.您是否正在运行64位CF安装?回到CF8时代,这是不寻常的事情,值得一提.
基本上这个错误表明你使用了太多内存(你知道多少).我将看看你在会话和应用程序范围内投入了多少东西,并剔除了不必要的东西.
会话范围内的对象特别糟糕:它们的占用空间比人们想象的要大得多,并且造成的问题比它们的价值更大.
我还会看看你有多少非活动但没有超时的会话,以期对你的会话超时更加激进.
查看您的查询,并删除任何您的查询,并将SELECT *它们切换回您需要的列.将数据处理推送回DB而不是CF中.
将计划任务停放到不同的CF实例上.
你在做大文件吗?要么阅读和处理它们,要么通过它们提供服务<cfcontent>?这可以很快地咀嚼记忆.
CFC中的所有函数局部变量是否都已正确变量?特别是那些最终进入共享范围的CFCs.
你不小心打开了调试吗?
您是否大量使用自定义标签或调用的文件<cfmodule>?我听过自定义标签导致内存泄漏的错误故事.
抓住Mike Brunt或Charlie Arehart看看你的服务器配置/应用程序(他们显然会收取咨询费).
我会更新这个,因为我想到了更多需要注意的事项.