1

我们经常遇到 ColdFusion 8 的性能问题。在一个由 3 台前端服务器组成的场中,一台服务器不可用:由于某种原因,CPU 运行 100%(在一个核心上)并且从不停机。检查 Windows 任务管理器时,似乎 jrun 进程正在使用 100% 的 CPU。

有人知道如何开始排除故障吗?如何首先找出导致峰值的原因。我对 .net 更感兴趣,在 java/jrun 故障排除时感觉有点迷茫。

我们目前的配置是:CF 8 在 Windows 2008 R2 64 位上运行,带有 Oracle 11g 客户端,具有 4GB RAM 和双核 CPU。

4

4 回答 4

1

您是否使用客户端变量?三重检查您的代码,如果您确定它们不是在注册表中设置,而是在数据库中设置。

于 2012-06-11T21:07:31.837 回答
0

如果它只有一台服务器,并且您确定代码库是相同的,我会进入 cfadmin 中的坏服务器和一台好的服务器,并逐行比较设置摘要。确保设置之间没有任何明显的差异。请特别注意 DB 驱动程序的版本。

您也没有提到服务器硬件配置是否相同。正如 Mark 指出的那样,4 gig RAM 可能不足以安装 64 位。内存很便宜。RAM 是你的朋友。获得更多。

于 2012-06-12T14:19:14.530 回答
0

看看这个问题

奇怪的 JRUN 问题。JRUN 每两个小时消耗 50% 的内存

我定期面临 50% 的 CPU 使用率,这是由于存储在注册表中的客户端变量。即使您没有使用客户端变量,但由于在 Application.cfc/.cfm 文件中添加了设置,它在您不知情的情况下存储在注册表中。

还要尝试找出导致问题的线程并获取它的跟踪信息,这将有助于您对此进行更多调查。在上面链接的答案中,我发布了我的博客文章的链接,并解释了如何使用 visualvm 和 jconsole 来获取恶意线程的堆栈跟踪。

希望这有帮助。

于 2012-06-12T05:20:05.267 回答
0

将需要更多信息。当您说 4 gigs 的 RAM 时,您的意思是 4Gig 堆,对吗?还是您实际上在运行 4Gig 64 位操作系统?如果是这样,您应该考虑获得更多。CF 64bit 使用 80% 以上的 RAM 来获得相同的效果 - 换句话说,2gig 64bit 堆大致相当于 1gig 32 位堆。

话虽如此,对于我们没有真正看过您的系统的任何人,我不会接受任何关于您的堆大小的全面建议。调优 JVM 需要真正的经验——但也需要对系统、预期流量等有实际的了解。

我的另一条评论是,您绝对应该检查客户端变量。1 个核心被占用的事实让我认为清除任务正在挂起(很可能是由于 Paul 所说的注册表中的客户端变量。或者可能是计划任务(cf 监视器或聚变反应堆可以帮助梳理请求)正在运行)。

还有另一个堆栈溢出线程,上面有一些额外的帮助。忽略所有堆栈跟踪内容并查看特定的“要检查的区域”。建立你要尝试的东西清单,然后按易于实施(或可能的原因)排序,并开始尝试消除清单中的可能性。

于 2012-06-12T02:50:21.873 回答