超过 Coldfusion CFQUERY 时间限制时收到电子邮件提醒

Receive email alert when Coldfusion CFQUERY time limit exceeded

今天早上我们的 Amazon EC2 Windows 服务器几乎没有响应,间歇性地抛出 500 个错误。在 CF 日志中,我看到了一堆这样的错误:

The request has exceeded the allowable time limit Tag: CFQUERY 

重启服务器后,一切恢复正常

虽然我正在寻找这个问题的根本原因,但是否可以将 CF Admin 配置为在某个日志文件错误开始连续多次出现时发送电子邮件,就像这一次一样?我们已经为 EC2 上的中断配置了健康状态检查,但它们从未触发,因为服务器仍然 运行,速度非常慢。我想成为这种情况的第一响应者但不知道,因为当它发生时我没有主动监控服务器 - 几个小时后用户不得不提醒我这个问题,这让我很尴尬.

提前致谢!

不知道这是否是最佳实践,但我所做的是利用 application.cfc 中的 OnError 函数来报告未处理的错误。

<cffunction name="onError" returnType="void" hint="Runs when an uncaught exception occurs in the application.">
    <cfargument name="Exception" required=true/>
    <cfargument name="EventName" type="String" required=true/>

    <cfmail to="myemail@mydomain.edu" from="myemail@mydomain.edu" subject="Error Alert" type="html">
        <cfdump var="#session#">
        <cfdump var="#CGI#">
        <cfdump var="#Exception#">
    </cfmail>
</cffunction>

您显然可以过滤出您想要报告的错误类型。

如果你只想在函数中专门检查(超时发生的地方),那么你应该使用:

<cffunction name="yourfunction">
    <cftry>
    ...
    <cfcatch>
        <cfmail to="myemail@mydomain.edu" from="myemail@mydomain.edu" subject="Error:yourfunction">
        <cfdump var="#session#">
        <cfdump var="#CGI#">
        <cfdump var="#cfcatch#">
    </cfcatch>
    </cftry>
<cffunction>

查询超时并不是服务器不堪重负的唯一来源。您可能想要更全球化的东西。

您可以在 CF Administrator 应用程序上执行的操作是使用警报配置。这不仅可以让您在满足某些条件时通知自己,还可以杀死有问题的线程。

除此之外,我们所做的是在我们的开发服务器上安排一个脚本,以尝试向生产服务器发出 1 秒超时的 http 请求。如果尝试失败,邮件将发送给其他人、寻呼机和手机。