我有一个用 ColdFusion 编写的 Web 应用程序,它会定期启动使用 100% 的服务器 CPU 并导致 ColdFusion 服务崩溃。

由于我自己无法重现问题,我想找到一个实用程序,当 CPU 使用率开始攀升时,它会通过电子邮件通知我,这样我就可以跳上服务器,查看 FusionReactor 以了解发生了什么情况,并识别行为不当的代码。

我在谷歌上搜索过,但找不到合适的实用程序,所以我想问问其他程序员是否找到了可以进行这种监控的工具。考虑到我的具体需求,我不想编写自己的监控工具。

如果您对解决整个问题有其他建议,我也很想听听。

对答案的回应:

使用 Windows perfmon 触发命令行听起来很有希望。谁能给我指点如何做到这一点的教程?

我们没有设置用于接收 SNMP 陷阱的监控系统。

我们运行的是 ColdFusion 8 标准版,它不包括 ColdFusion 性能监控工具——只有 Enterprise 包括这些工具。

Peter Boughton 的回答可能会让我解决问题,但是当 CPU 开始飙升时,它并不能帮助我主动解决问题,所以我仍在寻找通知解决方案。

有帮助吗?

解决方案

几周前我遇到了类似的问题,并被引导到一个名为 AlwaysUp 的程序。

http://www.coretechnologies.com/products/AlwaysUp/

通过以下任意组合监控任何流程:

  • 内存使用情况
  • CPU使用率
  • 反应迟钝
  • 运行自定义脚本以确定是否应重置

从这里您可以重新启动服务,或发送通知电子邮件,或运行脚本来记录内容等。

他们有 30 天的演示,我在第二天就被卖了。当您深入了解问题的根源时,这是一个很好的快速解决方案。

其他提示

在Windows上,您可以使用Windows标配的性能和监视工具(perfmon)。当CPU达到某一点时,它可以触发SNMP通知,大多数系统监控工具都可以通过该通知,并以此方式提醒您。它还可以运行命令或执行各种其他有用的功能,可以帮助您确定它。

如果您正在运行Coldfusion 8(性能监视器),则可以使用另一种替代方法。您可以设置警报以向您发送电子邮件,根据不同的标准呼叫另一个CFC等。

我经常使用服务器监视器 - 这是一个很棒的工具,即使我没有过多地使用警报,他们可能非常值得研究,因为它们看起来很容易设置。

至于整体方法......

在我们公司,我们使用来自一台服务器的Windows Perfmon每隔30秒轮询一次所有CF服务器,以获得一些指标,如总CPU和平均响应时间。我们将其记录为CSV文件。每隔几分钟运行一个计划任务,读取这些文件的详细信息并将其保存到数据库表中。然后它会截断文件,使它们不会变得太大。

最后,每天一次,我们会收到一份报告,详细说明我们的技术部门的所有服务器指标,它们描绘了我们所有服务器的CPU和平均响应时间。

我们发现这是一种很好的方法,可以尽早将服务器性能保持在开发人员的意识和现象趋势(例如CPU利用率不佳)。我们发现它非常有效,因为在您开始衡量指标之前,您无法确定自己的表现是否正常。

您不一定需要此通知 - FusionReactor具有日志文件,因此您可以在发生后检查这些文件,并确定当时运行的脚本。

如果您不确定它何时发生,我相当确定其中一个日志包含内存和CPU使用情况 - 虽然我不记得现在的名称是什么,但是在日志,你应该找到相关的信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top