IIS High use & Server Performance issues

Have an SBS2011 running Exchange, a database app and a few other things serving 5 users (3 low use, 1 high).

The server was never specced for the database app so it isn't as powerful as I'd like... Only 12GB RAM.

We have increasingly found performance problems with this server, last week it was so bad I couldn't even connect remotely.

To free up some available RAM I have (over the past month or so):

  • Restricted the Exchange Message Store to 1GB with (so far) no ill effects.

  • Restricted SQL Databases (including SBSMonitoring and Sharepoint/##SSEE (Which isn't used)).

Now I am finding that IIS Worker threads are using up the available memory and I have (so far) been unable to track down much useful information about restricting them.

IIS Worker Threads

This server is not 'serving' anything web-based apart from OWA that I am finding people using because Outlook is so slow (again related to the Servers performance).

I am aware that Exchange on SBS2011 is designed to use up available resources (and concede when other applications request). But it is not doing so (or anywhere near fast enough) for our needs.

Opening the database application (using Postgres) takes 5+ minutes from client machines and regularly times out or crashes due to this.

After a reboot (before SQL/Exchange/IIS databases are very large/totally cached) we get the performace we need and expect. Previously a reboot once a month was enough... Then once a week... Now they have taken to rebooting it almost daily!


I dug around and found useful information which enabled me to restrict these w3wp.exe processes (IIS workers).

  • I used information from here to find out which of the IIS workers where the largest. You could also use 'Process Explorer' to do this.

  • I am unable to find the exact page/site I found the information, but you can restrict the IIS database sizes by causing them to 'recycle' after consuming a certain amount of memory. These pages contain the same information, but they were not the ones I read.

You can do this by:

  1. Run IIS Manager as Administrator
  2. Expand the Server, expand and click on Application Pools
  3. On the right hand side click 'Recycling' under 'Edit Application Pool'enter image description here
  4. Change the 'Memory Based Maximums' to the Memory footprint you wish to use (in my case 100mb)enter image description here
  5. Review the alert levels etc after clicking on Next

Note: as I have further restricted WSUS and am not using Sharepoint I set them to recycle quite low.