问题:经过一段不确定的时间后,应用程序池中运行的所有网站都会返回 503 错误,因为 IIS 已因池中的快速故障而停止池。将故障次数从 5 次增加到 50 次仍然无法解决问题。
在事件查看器中,我可以在崩溃时看到许多警告,最后一个是导致池停止的错误。所有警告都提到以下两件事之一:
A process serving application pool 'domain.com' suffered a fatal communication error
with the Windows Process Activation Service. The process id was 'XXXX'. The data field
contains the error number
A process serving application pool 'domain.com' terminated unexpectedly. The process id
was 'XXXX'. The process exit code was '0xff'.
系统:IIS 7.5、Coldfusion 10(通过 Tomcat 连接)、Win Server 2008
最初我以为这是由于 CF 错误所致,该错误已报告并随后在 HotFix 4 中得到修复。然而,问题发生后我的问题仍然存在。(问题发生之前,CF 错误日志中有几个 getRealPathFromConn 错误,但自更新以来这些错误消失了,但应用程序池停止仍然存在。)我已经在各种论坛(Adobe/Stack)上对该问题进行了广泛的 Google 搜索/讨论,现在我正在尝试在这里解决。
我迄今所做的:
由于这篇文章:http://blogs.coldfusion.com/post.cfm/tuning-coldfusion-10-iis-connector-configuration我已经在 server.xml 和 worker.properties 中将连接池超时更改为 60 秒。
将 IIS 中的快速失败设置为 50。
将 CF 更新至最新版本。
问题):
诊断问题原因的最佳方法是什么?(我假设服务器用尽了可用的连接,但我如何才能确切地知道是什么原因导致错误发送到 IIS。)
有人能给我指出正确的方向吗,我可以在workers.properties、server.xml等中调整哪些我还没有尝试过的项目?
我如何才能确定连接器确实导致了 IIS 中的错误?根据我在此主题中的讨论 (http://forums.adobe.com/thread/1023068) (用户 Lee Bartelme) 我已收到帮助,另一位用户表示他认为这就是问题所在。阅读此处和互联网上其他地方的其他帖子,确实似乎存在这种联系,但可能还有其他原因。
我考虑过只为崩溃的应用程序创建一个连接,但我认为这没什么用,因为故障应用程序池上的站点占用了我们的大部分流量。甚至其他应用程序也引用主站点的资源,因此基本上几乎任何页面请求都会从这个主站点请求资源。
(附注:当用户请求一个页面,并且该页面从中提取三个资源时domain.com/assets
,假设有三个样式表,这实际上不是使用了三个连接,还是只使用了其中一个?或者我对连接的理解是错误的?)
如果您需要任何其他信息,请告诉我需要提供什么。我的所有文件都是 Coldfusion 默认设置的,除了我的 worker.properties 有worker.cfusion.connection_pool_timeout = 60
并且我的 server.xml 有<Connector port="8012" protocol="AJP/1.3" redirectPort="8445" tomcatAuthentication="false" connectionTimeout="60000" />
代替<Connector port="8012" protocol="AJP/1.3" redirectPort="8445" tomcatAuthentication="false" />
。(添加了连接超时。)
另外,我是一名开发人员,而不是服务器管理员,但是我的任务是维护我们的服务器运行,所以请温和地解释事情,并假设我对问题中未列出的术语/项目/文件一无所知。