我在 Windows Server 2003 上运行 IIS,遇到了 500 内部服务器错误的问题。我想检测是否有任何用户遇到以下错误,如果发生,请重新启动服务器。
我只是找不到好的方法来检测服务器是否返回此错误。我尝试通过在一段时间内从服务器下载一些轻量级页面并检查错误来检测它,但我不认为这是最佳方案。
请分享一些有关我的任务的想法。提前致谢。
答案1
因为 500 响应而重新启动 IIS 就好比用大锤猛砸鸡蛋。重新启动无法解决这个问题,您必须找出导致 500 的原因并纠正它才能解决问题。在出现 500 时自动重新启动服务器并不能解决问题。充其量,这只是一个非常弱的解决方法。
如果您的页面生成了 500 错误,并且严重到需要重新启动服务器,那么您的情况就很糟糕,您应该集中精力确定错误的原因。查看 IIS 日志中的错误信息。您可能需要启用更多日志字段以获取所需的信息。如果尚未启用,请在应用程序中启用详细的错误报告。
也就是说,如果您想检测何时发生 500,您将需要执行以下操作:
- 监视 IIS 日志
- 监视 Windows 应用程序事件日志。
- 编写自定义脚本(客户端)并将其添加到 500 错误的自定义错误页面,以便它通知您
可以在以下位置找到有关 IIS 日志的良好、简洁的描述这个帖子. 相关片段:
IIS6 最有价值的日志文件(及其位置)是:
- HTTP.SYS 错误日志-
%windir%\System32\LogFiles\HTTPERR
(默认位置;可配置)- IIS 网站日志 -
%windir%\System32\LogFiles\W3SVC#
(默认位置;可配置)**- 事件日志(系统和应用程序)
如果您面临连接过多的情况,我仍然建议您对应用程序进行故障排除,尤其是内存泄漏。将有问题的应用程序隔离到其自己的应用程序池中,以避免重新启动整个服务器。