当超过Coldfusion CFQUERY时间限制时收到电子邮件警报



今天早上,我们的 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 管理员应用程序上执行的操作是使用警报配置。 这不仅允许您在满足某些条件时通知自己,还可以杀死有问题的线程。

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

相关内容

  • 没有找到相关文章

最新更新