自上个月以来,我们公司的服务器出现问题(Win2008ServerStd + IIS7 + CF enterprise 9.0.1(hotfix2))。
我使用jConsole来监控Coldfusion JVM(1.6.0_24)活动,这就是我所看到的:
注意奇怪的曲线" 14:10到14:15之间!那是什么?
显然,它不是标准行为,当它发生时,我的应用程序会挂起30到70秒!
你知道什么会导致内存问题吗?看起来GC无法正常运行,或者自行挂起。
我不期待快速回答,我不知道会有很多根本问题造成这种情况,但......我可以在哪里开始调查?
答案 0 :(得分:2)
使用cfstat,perfmon,fusionreactor或cf性能监视器可以查看正在运行的请求并排除问题。您可能会看到的是运行请求超过同时请求的设置(在cf admin中)。然后请求将开始排队。最终队列将清除(如果您的服务器正在自行恢复)。
这种事情可能是由许多事情引起的。例如,如果您的数据库服务器速度变慢或出现问题,如果您的网络出现问题,或者网络端口正在重新同步,则说明您的磁盘存在I / O问题等。
我的猜测是,你会通过监控堆来驱动自己捣蛋。看看你是否可以观看其中一个监视器,查看可能是罪魁祸首的特定脚本。
另一个评论(关于一些索引代理)也是可能的。一连串的索引肯定会导致行为。如果是这种情况,您可以查看同步请求设置。如果设置为默认值,则可能有足够的空间来增加它。
答案 1 :(得分:1)
它可能是一个蜘蛛创建了大量的会话,因为它爬行了一段时间会占用内存的网站。一旦蜘蛛停止爬行,那些会话就会超时并被垃圾收集。
我会将您的HTTP服务器日志与JVM日志进行比较。比较该时间范围,看看是否有来自搜索引擎蜘蛛(Googlebot,msnbot等)的大量请求。
答案 2 :(得分:1)
法比奥, 我几个月前遇到的同样的问题是,我在定期间隔时出现高峰,而服务器占用了50%的CPU使用率。我在URL下面写了完整的故事 http://www.isummation.com/blog/strange-coldfusion-issue-jrun-eating-up-to-50-of-cpu/ 这可能会对你有所帮助(很抱歉这么久)。
我发现存储在注册表中的客户端变量导致了问题,我能够在VisualVM的帮助下捕获,我首先找到导致问题的线程并查看完全找到解决方案的跟踪。
答案 3 :(得分:0)
唯一真正奇怪的IMO就是拥有如此众多线程的突然飙升。定期捕获一个线程转储(jstack等等......是你的朋友),然后将这些线程转储关联到监控它显示峰值的监控位置。
一旦你理解了所有额外线程正在做什么,根问题就会变得更加明显。也许这是处理事务的更多线程,但它可能完全不同。