Recently I started seeing this error show up in the Health Analyzer after consolidating some of my SharePoint application pools so as to conserve some server resources.  On this particular farm we had set up a main collaboration site running under it’s own application pool, and then about a dozen web applications that contained custom coding that we ended un consolidating under another application pool.

Now there are actually several reasons for this error to occur.  If you’ve set up a large farm and broken out your app server from your WFE servers, then this error is pretty standard as Microsoft has this rule set up as an all or nothing type rule as documented here.

However, another reason for this error message coming up is if you’ve consolidated your application pools and reassigned your web applications to use one generic pool, while you can safely delete these application pools, SharePoint is still looking for them in order to verify their existence and proper settings.  When it can’t find them, that is when it gives you the MSCryptic and quite wrong error message that there is a problem with the application pool recycle settings.

In order to “fix” the alert, first you need to check and see what application pools the SharePoint farm is still expecting on the servers, to get this list you can open a PowerShell console and enter the following:

$contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$contentService.ApplicationPools | fl Name, ID

In my case, there were several application pool entries that existed in the ApplicationPools collection whose Web Application had already been reassigned to my GenericPool application pool, and in some case I had already deleted from the servers or showed as having 0 applications connected to them.  These ApplicationPools entries were literally just hanging around with nothing to do other than set off my HA alerts.

The solution is to go through and remove the entries from the ApplicationPools collection so SharePoint HA does not try to iterate through them and check their health settings:

$contentService.ApplicationPools.Remove("<insert application pool ID>")

And now, go into SharePoint Central Admin->Monitoring->Review Problems and Solutions and recheck the "Title Application pools recycle when memory limits are exceeded. " warning, it should go away in a minute or two.