我有一个ColdFusion 8.1应用程序。它被大量使用,我看到jrun.exe在任务管理器中获得了非常高的内存使用率。这是一个32位的Windows 2003服务器。当Jrun绕过一堆内存使用时,ColdFusion会在某些时候停止响应。日志有点模糊,但我开始在ColdFusion日志中看到垃圾收集和堆错误。我假设JRE内存不足。
我将最大JVM堆设置为1.2gig。经过一些实验,这似乎是我可以分配的最大量,并且仍然可以使用ColdFusion。我意识到转到64位可能会解决问题,但目前这不是一个选择。
我正在考虑升级JRE(它是在2008年之前的v6.x,虽然我不知道确切的版本。我正在使用ColdFusion 8.1附带的JRE。有没有人经历过这个?我假设这只是安装新JRE并将ColdFusion指向ColdFusion服务器设置中的新JRE目录的问题。
TIA 别
答案 0 :(得分:7)
非常很容易做到。
1)下载Java SE Development Kit并按正常方式安装。
2)在文本编辑器中打开 jmv.config for cf,该编辑器位于 c:\ coldfusion8 \ runtime \ bin
3)注释掉现有的 java.home 行,在行的开头加一个“#”添加一个新的 java.home 下面的一行指向你的jvm安装。
举个例子,我的java.home和jvm.config看起来像这样: java.home = C:/ Program Files / Java / jdk1.6.0_11 / jre
4)重启CF服务。
作为奖励,你可以运行JavaRa并通过删除所有旧版本的JRE来释放一些空间。
答案 1 :(得分:2)
Adobe拥有涵盖此类问题的知识库。请查看http://www.adobe.com/go/2d547983以获取相关说明。
Sean Corfield有一篇文章提供了有关在ColdFusion 8中使用Java 6的一些信息: http://corfield.org/blog/index.cfm/do/blog.entry/entry/Java_6_and_ColdFusion_8
只要安装1.6.0_10或更高版本,就可以了。您可能会不时查看ColdFusionBloggers.org,以防将来发现其他JVM问题。
答案 2 :(得分:0)
您未指定是否使用独立服务器实例或多服务器配置。如果您获得大量流量并且拥有具有大量物理内存的双核计算机,我会考虑研究CF8的多服务器设置并将具有负载平衡的集群组合在一起。这将有助于在多个CF8实例之间分配流量,并假设您拥有一台强大的服务器,可以更好地利用您可用的物理资源。
-Rick
答案 3 :(得分:0)
考虑移动Java 7. Java 7具有G1垃圾收集器,它在内存释放方面更好。
如果您遇到内存不足问题,可能是因为
var
或local
范围
<cfdump>
用于生产系统
SELECT *
会导致这种情况。