2

从上个月开始,我们公司的服务器(Win2008ServerStd + IIS7 + CF enterprise 9.0.1 (hotfix2))出现问题。

我使用 jConsole 来监控 Coldfusion JVM (1.6.0_24) 活动,这是我看到的:

曲线1

曲线2

请注意 14:10 到 14:15 之间的奇怪“曲线”!那是什么?

显然这不是标准行为,当它发生时,我的应用程序会挂起 30 到 70 秒!

你知道什么会导致内存问题吗?似乎 GC 没有正确运行,或者自己挂起。

我不希望得到一个快速的答案,我想知道可能有很多根本问题导致了这个问题,但是....我可以从哪里开始调查?

4

4 回答 4

2

使用 cfstat、perfmon、fusionreactor 或 cf 性能监视器查看正在运行的请求并在出现问题时排队。您可能会看到正在运行的请求超出了同时请求的设置(在 cf admin 中)。然后请求将开始排队。最终队列将被清除(如果您的服务器正在自行恢复)。

这种事情可能是由很多事情引起的。例如,如果您的数据库服务器速度变慢或出现问题,如果您的网络出现问题,或者如果网络端口正在重新同步,如果您的磁盘有 I/O 问题等。

我的猜测是,你会试图通过监控你的堆来解决这个问题。看看您是否可以在其中一个监视器上查看可能是罪魁祸首的某些特定脚本。

其他评论(关于一些索引代理)也是一种可能性。一连串的索引肯定会导致行为。如果是这种情况,您可以查看同时请求设置。如果它设置为默认值,您可能有足够的空间来增加它。

于 2012-04-19T15:27:59.430 回答
1

法比奥,几个月前我遇到了同样的问题,我定期出现峰值,服务器占用了大约 50% 的 CPU 使用率。我在 URL http://www.isummation.com/blog/strange-coldfusion-issue-jrun-eating-up-to-50-of-cpu/下写了完整的故事 ,这可能对你有帮助(抱歉这么久)。

我发现存储在注册表中的客户端变量导致了问题,我能够在 VisualVM 的帮助下捕捉到,我首先找出导致问题的线程并查看确切找到解决方案的跟踪。

于 2012-04-20T04:22:41.837 回答
1

它可能是蜘蛛在爬取网站时创建了大量会话,这会在一段时间内耗尽内存。一旦蜘蛛停止爬行,这些会话就会超时并被垃圾收集。

我会将您的 HTTP 服务器日志与 JVM 日志进行比较。比较该时间范围,看看是否有来自搜索引擎蜘蛛(Googlebot、msnbot 等)的大量请求。

于 2012-04-19T15:02:13.753 回答
0

IMO 唯一真正奇怪的是拥有这么多线程的突然飙升。定期捕获线程转储(jstack 等是您的朋友),然后将这些线程转储与显示峰值的监控相关联。

一旦你了解了所有额外线程在做什么,根本问题就会变得更加明显。也许是更多的线程处理事务,但它可能完全是另外一回事。

于 2012-04-20T05:46:15.117 回答