8

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

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

我已经用 Google 搜索过,但找不到合适的实用程序,所以我想问问其他程序员是否找到了可以进行这种监视的工具。鉴于我的具体需求,我不想编写自己的监控工具。

如果您对解决整体问题有其他建议,我也很乐意听到这些建议。

对答案的回应:

使用 Windows perfmon 触发命令行听起来很有希望。任何人都可以向我指出如何做到这一点的教程吗?

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

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

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

4

4 回答 4

4

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

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

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

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

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

他们有一个 30 天的演示,我在第二天就被卖掉了。当你找到问题的根源时,这是一个很好的快速修复。

于 2008-11-14T05:11:25.030 回答
2

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

于 2008-11-12T02:07:59.790 回答
1

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

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

至于整体方法...

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

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

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

于 2008-11-12T09:50:53.337 回答
1

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

如果你不确定它什么时候发生,我很确定其中一个日志包含内存和 CPU 使用情况——虽然我现在不记得名字是什么了,但是你可以在日志中戳一下应该找到相关信息。

于 2008-11-12T23:49:47.230 回答