我有一个IIS ARR / Web场使用健康testingfunction(healthcheck)。 testing中的设置是每隔30秒检查给定的URL。 它每30秒检查一次,但在每次检查期间发送数百个请求。
有没有人见过这个? 你知道如何预防吗?
Web场configuration:
<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
根据对Scott Forsyth博客的这一评论 ,如果在具有多个应用程序池的服务器上有一个Web场,就可能发生这种情况:
问题是ARR没有一个专门的工作进程来进行健康testing,所以它只是使用所有的w3wp.exe工作进程。 这意味着如果你有多个应用程序池或一个networking花园,那么你将有一个非常疯狂的健康testing模式。
消除它的唯一方法是缩减应用程序池和/或工作进程的数量。