“Value does not fall within the expected range” issue (Solved)

IIS applications run on application pools. Application pools receive requests and process them based on the settings defined. One of the settings is application pool identity. This is the account that runs application pool and perform required tasks. You may come across to this error message while trying to set a custom account as application pool identity: “Value does not fall within the expected range.

This error occurs only if you are specifying a custom account and not using any predefined accounts such as ApplicationPoolIdentity or NetworkService.

The exact error message:

There was an error while performing this operation. Details: Value does not fall within the expected range.

Read More

5 Useful Performance Counters to Monitor for IIS

Internet Information Services (IIS) brings your websites live with a robust infrastructure at fast speeds. Even the default configuration is optimized for speed, you may notice slowness loading your websites due to possible reasons such as the inefficient application code. Here are 5 performance counters I would recommend checking if you want to monitor the resource usage in your IIS server:

  • Processor (All instances – % Processor Time): CPU consumption broken down by processes
  • Memory (Available Mbytes): Available memory in OS
  • HTTP Service Request Queues (CurrentQueueSize): The request count that is pending in the IIS queue
  • .NET CLR Exceptions (# of Exceptions Thrown/sec): The count of System.NullReferenceException thrown by the applications
  • APP_POOL_WAS (For all listed Application Pools):
    • Current Application Pool State: allows you to see the state of application pools
    • Current Application Pool Uptime: Allows you to see if the web application has been restarted or not
IIS performance counters in Performance Monitor
Recommended counters to monitor for IIS performance

In order to monitor these counters, follow the steps below:

  1. Go to Start. Search for “Performance Monitor
  2. Click on the green plus sign (+)
  3. Select a category (Processor, Memory etc.)
  4. Select a sub-category (% Processor Time, Available Mbytes etc.)
  5. Select an object (_Total, <All instances> etc.)
  6. Click “Add
  7. Click “OK

With these instructions, you can monitor the real-time statistics of your server. If you want to save these statistics:

  1. Right click on “Performance Monitor” under “Monitoring Tools” on the left side
  2. Select “New > Data Collector Set
  3. Give a name and click “Next
  4. Select a path to save the data and click “Next
  5. Select “Start this data collector set now” and click “Finish
  6. You will see an arrow icon on the collector set you created. It means it’s recording the logs. Once you have recorded for a desired time, right click on the collector set and select “Stop
  7. You can go to the path you specified in Step 4 or you can click “Latest report” button (Green notebook icon) to see the report
Report of IIS performance counters
Saved report of a data collector set

If you are not happy with your server’s resource usage and you want to fine-tune IIS performance, check my detailed post: 9 Easy and Practical Recommendations to Improve IIS Performance

For more performance counters related to IIS and ASP.NET, check these posts out:

9 Easy and Practical Recommendations to Improve IIS Performance

IIS hosts millions of websites around the world. Thanks to IIS Manager, it is easy to create and manage websites. Websites use default functional and performance settings which are efficient most of the time. However, you may want to fine-tune IIS performance for specific applications and cases.

Fine-tuning IIS Performance

In this post, I will explain 8 recommendations that potentially improves IIS performance. Most of the recommendations are compatible with IIS 7.0 and newer versions with a few exceptions. I will mention the exceptions in their respective section.

Recommendation areas:

  1. Output Caching
  2. Application Initialization
  3. Default Document
  4. HTTP keep-alive
  5. Cache-control Header
  6. Idle Time-out Action
  7. Dynamic Compression
  8. and 9. Other options (Queue Length, Enable 32-bit Applications)
Read More