我有一个使用健康测试功能 (healthcheck) 的 IIS ARR/Web Farm。测试的设置是每 30 秒检查一次给定的 URL。它确实每 30 秒检查一次,但每次检查都会发送数百个请求。
有人见过这种情况吗?你知道如何预防吗?
Web 场配置:
<webFarm name="wf_site.at.your.domain_webservices_crosscampusenrollment" enabled="true">
<server address="site1.at.your.domain" enabled="true" />
<server address="site2.at.your.domain" enabled="true" />
<applicationRequestRouting>
<protocol timeout="00:00:30" reverseRewriteHostInResponseHeaders="false">
<cache enabled="false" queryStringHandling="Accept" />
</protocol>
<affinity useCookie="true" cookieName="ARRAffinity_site.at.your.domain_webservices_crosscampusenrollment" />
<loadBalancing algorithm="WeightedRoundRobin" />
<healthCheck url="http://site.at.your.domain/webservices/CrossCampusEnrollment/healthcheck" />
</applicationRequestRouting>
</webFarm>
这里有一个IIS 日志要点。
服务器信息:
Windows Server 2012 R2 Standard - Build 9200
IIS 8.5 - 8.5.9600.16384
URL Rewrite Module 2 - 7.2.2
ARR 3.0 - 3.0.1750
WFF - 1.1.1292
答案1
根据Scott Forsyth 博客上的这条评论,当您在具有多个应用程序池的服务器上拥有 Web 场时,可能会发生这种情况:
问题是 ARR 没有专门的工作进程来进行健康测试,所以它只是使用所有的 w3wp.exe 工作进程。这意味着如果你有多个应用程序池或一个网络园,那么你将有一个非常疯狂的健康测试模式。
消除它的唯一方法是减少应用程序池和/或工作进程的数量。