今天早上,我们的 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 请求,超时一秒。 如果尝试失败,邮件将发送给人员、寻呼机和手机。