Application Pool warm-up

I had a post the other day on forums.iis.net that I did some research and wanted to share.  It was regarding Application Pool warm-ups.  Currently, there is no settings to help after a recycle, crash of an app pool etc.  http://www.asp.net/learn/whitepapers/aspnet40/#_Toc223325464   ASP.NET 4.0 has some configuration posted here.  I know IIS 7.5 will have the plumbing to support this.   A few searchs on the internet (Google, Live) shows there is plenty of Sharepoint warm-up scripts and ideas.  Sharepoint is dreadfully slow on warm-up.   Here are a couple of handle links I found.

Here is my response in the forum.

"The app pool warm up architecture is a weakness that will be address in Win 2008 r2 with some warmup architecture.  Until then, the only way would be to A) Use SCOM (System Center Operations Manager) to send an HTTP request on a recycle.   It can watch for events and send requests based on an additional management pack.  SCOM is pretty pricey and not all people deploy it.  B) Would be to have some script that makes an http request to a webpage that runs every X number of seconds (vbs file scheduled with task scheduler).  C) Have some external monitoring htting the website doing screen scrapes.  B) and C) are poor mans options and it's a 'shot in the dark', but it'll at least be hitting your site on a continual basis minimizing potential perfmon issues.

To help minimize app pool recycles, you can set the recycle event to a specific time (say in the middle of the night).  On a webfarm, make sure to stagger so not all are hitting at once.  Set the virtual memory limits higher so you don't accidentally get a lot of resets.   I'd look at the application pool properties (advanced) and see what stands out.   The memory limits and controlled recycle times are two that strike me right off. Under recycle event log entry, you can experiment with logging everything and build some log parser queries to look for specific events to see if there are issues.  the long short of the story nothing easy, I see searching google there are some Sharepoint ones, these might be something to try, but nothing specific to generic IIS. (Sharepoint warm-up times are terrible).

http://weblogs.asp.net/steveschofield/archive/2006/09/28/Schedule-a-task-to-call-a-webpage-using-Task-scheduler_2E00_.aspx"

I look forward to R2's feature for this, it's long overdue and will help with performance on many data driven and ASP.NET websites.  If you have a method that you've found successful, I'd like to here.  Drop me a line at steve AT iislogs.com

Cheers,

Steve Schofield
Microsoft MVP - IIS

No Comments