Title Application pools recycle when memory limits are exceeded.
Severity0 – Rule Execution Failure
ExplanationAccess is denied.
RemedyIn the Internet Information Services Manager, uncheck any memory-based maximums set for the application pools named above. For more information about this rule, see "http://go.microsoft.com/fwlink/?LinkID=142692".
Failing ServicesSPWebService (WSS_Administration)

Another fun MSCryptic message from our good friend the SharePoint Health Analyzer.  In this case, Microsoft has yet to allow us to separate out the HA rules to individual servers Unfortunately these rules tend to be an all or nothing approach, and in the case of this rule’s scope we get two choices:


So, what this means is that if we’re running a medium or large farm and we’ve gone and separated out our various application pools so that the Central Admin (CA) and the Web Front End (WFE) are on different services and are in fact isolated, then even though everything is properly set up, because it does not see certain app pools on a server that it thinks should be there it flags the SPHA rule.

Hopefully MS will someday allow us to configure the rules to run on a per-server level instead of just farm level.  In the meantime, three possible solutions:

  1. Easiest way to make this rule go away is disable it
  2. second easist is to install the app pools/services it is expecting on every server in the farm. The health rule checks each application pool in the SPWebService ContentService ApplicationPools collection. If it can’t find the Application Pool on the member server is it checking, it will fail and cause this Health Analyzer (HA) item (notice the application pool name(s) are blank in the message).  You can determine the potentially missing Application Pool(s) with the following PowerShell:
$contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$contentService.ApplicationPools | fl Name

3. Complete Hack, but you can create dummy application pools so the SPHA can find them but they don’t do anything, thus preserving your service isolation on the farm and at the same time keeping the rule intact.

EDIT: So, turns out if you reassign the web application to a generic application pool and delete the old application pools from the server, SharePoint is still expecting to see them and will throw a Health Analyzer alert if you delete them from the server since it is trying to check for them. In order to remove unused application pools from the SharePoint configuration, please review: SharePoint 2010 – Application pools recycle when memory limits are exceeded (PART 2) where I show how to remove unused application pools from the ApplicationPools collection.