我们经常遇到ColdFusion 8的性能问题。 在一个由3个前端服务器构成的服务器场中,有一个服务器无法使用:出于某种原因,CPU会100%(在一个核心上)并且永远不会出现故障。检查Windows任务管理器时,jrun进程正在使用100%的CPU。
有人知道如何开始排除故障吗? 如何找出导致峰值的原因。 我对.net更加了解并且在java / jrun故障排除方面感觉有点迷失。
我们的配置目前是: CF 8在带有Oracle 11g客户端的Windows 2008 R2 64位上运行,具有4GB RAM和双核CPU。
答案 0 :(得分:1)
您使用的是客户端变量吗?三重检查您的代码,如果您确保它们未在注册表中设置,而是设置为数据库。
答案 1 :(得分:0)
将需要更多信息。当你说4 GB的RAM你的意思是4Gig堆吗?或者你真的在运行4Gig 64bit操作系统吗?如果是这样,你应该考虑多一点。 CF 64bit使用类似于80%RAM的东西来获得相同的效果 - 换句话说,2gig 64位堆大概相当于1gig 32位堆。
说过我不会从我们这些没有真正看过你系统的人那里得到关于你的堆大小的全面建议。调整JVM需要经验才能实现 - 但它还需要系统的实用知识,预期的流量等。
我的另一个评论是你应该检查客户变量。抓住1个核心这一事实使我认为清除任务正在悬挂(很可能是由于保罗所说的在注册表中的客户端变量。或者可能是预定的任务(cf监视器或聚变反应堆可以帮助梳理请求)正在运行)。
还有另一个堆栈溢出线程,还有一些额外的帮助。忽略所有堆栈跟踪内容并查看特定的“要检查的区域”。建立你的东西列表,尝试然后通过易于实施(或可能的原因)订购,并开始尝试消除项目作为列表的可能性。
答案 2 :(得分:0)
看看这个问题
Strange JRUN issue. JRUN eating up 50% of memory for every two hours
我在定期间隔内面临50%的CPU使用率,这是由于客户端变量存储在注册表中。即使您没有使用客户端变量,但它存储在注册表中,而不是在Application.cfc / .cfm文件中添加了您应知的设置。
同时尝试弄清哪个线程导致问题并获得它的stracktrace将帮助你更多地研究这个问题。在上面链接的答案中,我发布了我的博客帖子的链接,并解释了如何使用visualvm和jconsole来获取你的邪恶线程的堆栈跟踪。
希望得到这个帮助。
答案 3 :(得分:0)
如果只有一台服务器,并且您确定代码库是相同的,我会进入cfadmin以查找坏服务器和其中一台优质服务器并进行逐行比较。设置摘要。确保设置之间没有任何明显的差异。请特别注意数据库驱动程序的版本。
您也未提及服务器硬件配置是否相同。正如Mark指出的那样,对于64位安装,4 gig RAM可能还不够。 RAM很便宜。 RAM是你的朋友。得到更多。