Setting Request-Handling Goals

Applies To: Windows Server 2003, Windows Server 2003 with SP1

Request handling measures whether client requests were served correctly and the time needed for the WWW service to process client requests. There are two important measures for request handling: request-handling reliability and request processing time. Request-handling reliability measures the percentage of correctly formed requests that are returned successfully; request processing time measures the average elapsed time for IIS to process a client request.

Request-Handling Reliability

For a range of request rates that your applications receive, set goals to achieve the level of overall request handling reliability that you want. Measure only correct requests; do not consider a request that a client composed incorrectly as a failed request.

For example, you can establish a request processing reliability goal of 99.999% for a rate of 20 correctly formed requests per second. You meet this goal when a Web server that receives requests at a rate of 20 per second successfully serves 99,999 responses out of each 100,000 requests. A response may be considered successful if the request returns the expected message, such as 200 OK, and the correct content.

When testing your applications in a test environment, you can use a request rate such as 20 requests per second. However, when testing applications in a production environment, you might need to set a range of request rates. If you estimate that 20 requests per second is a reasonable goal, you might try a range of 10-30 requests per second. Also, monitor request handling over a long period of time, such as 21 days or a month, to ensure that you cover the periods of heaviest loads on the application.

The following is an example of a full expression of a request reliability goal for a Web site or application:

  • Duration: 21 days

  • Load: 10-30 requests per second

  • Success rate goal: 99.999 percent responses with the expected return message, such as 200 OK, measured against 100,000 requests

Keep in mind that you must adjust your goals to accommodate your needs, taking into account client expectations, application backend processing, and caching.

Request Processing Time

When a request is processed so slowly that the user is not willing to wait for a return, the effect on the user is similar that of a request failure. The user experiences a loss of availability.

The following is an example of a request reliability goal that accommodates request-handling execution time:

  • Duration: 21 days

  • Load: 10-30 requests per second

  • Success rate goal: 99.999 percent responses with the expected return message, such as 200 OK, measured against 100,000 requests

  • Average response time of 5 seconds for each request

To set your own goals for request processing time, evaluate the availability requirements of your organization and the equipment and software that you are using.

Testing Request-Handling

Test request handling and compare the test results to your goals. First run tests in a test environment, and then periodically run tests in your production environment. Measure request-handling performance for an application by completing the following steps:

  1. Send correctly formed requests from a remote client to the target application on the server that is hosting the application that you are testing. If you are testing an application on a production server, measure the performance of requests sent by users. If you are testing an application running on a test server, use automated load-testing software, such as WCAT, to send client requests to the application at a rate appropriate to test it. You can use WCAT to automate sending customized request loads and to emulate a wide variety of conditions. You can use Log parser to create request schemes that WCAT can use. For information about WCAT and Log parser, see IIS 6.0 Resource Kit Tools.

  2. Measure the rate at which the correctly formed requests are being processed successfully by the target application on your test server (responses that return 200 messages and correct content).

  3. Calculate the average elapsed time to process requests. One way to do this is to average the readings of the TimeTaken counter. The readings are in the IIS log.

  4. Compare the results to your goals.