IIS 7 and Above
Application Request Routing (ARR)
Heath Check Spamming Server
Last post Jun 18, 2020 09:40 AM by Elendil Zheng
Jun 15, 2020 10:09 PM|carlsonad|LINK
We've got a web farm setup with the following heath check configuration:
<healthCheck url="http://localhost/HealthTest.html" interval="00:00:30" timeout="00:00:30" liveTrafficFailureCodes="502-" maxLiveTrafficFailures="2" liveTrafficFailurePeriod="00:00:05" />
We've noticed recently that the health check url is being called more frequently than the 2 requests per minute that we expected.
Here's some data from the IIS logs:
this youtube video that mentioned that a request will be made for each application pool that exists on the server that is hosting ARR. We do have many application pools on that server.
Is that how it works? If so, is there anyway to change the behavior so only a single application pool makes the health check?
Jun 15, 2020 11:14 PM|Rovastar|LINK
Jun 17, 2020 03:58 PM|carlsonad|LINK
Thank you Rovastar.
I'm hoping someone from Microsoft can confirm there is no way to work around this besides having to reduce the number of application pools on the server running ARR.
Jun 18, 2020 09:40 AM|Elendil Zheng|LINK
There is no built in work around in ARR.
According to https://weblogs.asp.net/owscott/arr-health-checks-week-34#comment-374
The problem is that ARR doesn't have a dedicated worker process to do the health testing with, so it just uses ALL of the w3wp.exe worker processes. What that means is that if you have multiple app pools, or a web garden, then you'll have
a pretty crazy health testing pattern.
The only way to resolve that is to consolidate your app pools on your ARR server, or to live with the heavy testing pattern.
Otherwise you'll have to implement health check by yourself, something like creating a windows service that visit the health check page every 30 secs, and shutdown application when health check failed(Use IIS API). If the health check is
critical for your business I suggest you can write your own health check component. It's not that difficult.