[This is preliminary documentation and subject to change]
Web applications are essential to ecommerce. Customers browse products and make purchases with the help of Web applications. If a Web application is slow or not performing properly, the performance of your whole site can be affected. Poorly-designed Web applications can be the single greatest reason why customers do not complete purchases or decide not to revisit your site. This topic describes how to monitor and tune applications for improved performance.
Note
Upgrading a poorly written application to one that
is well designed and has been thoroughly tested can improve
performance dramatically. Keep in mind, however, that your Web
applications may be affected by back-end latencies (for example,
legacy systems) and remote data sources. If developers design
applications to get data from another Web site or server, and that
Web site or server experiences problems, the problems will cause
bottlenecks on your server.
Monitor the following performance counters to determine if your Web applications are creating a bottleneck on your server:
| Counters | Description |
|---|---|
| Active Server Pages\ Requests/Sec
Active Server Pages\ Requests Executing Active Server Pages\ Request Wait Time Active Server Pages\ Request Execution Time Active Server Pages\ Requests Queued | If you are running ASP applications on your server, these
counters can provide you with a picture of how well the
applications are performing. Active Server Pages\ Requests/Sec does
not include requests for static files or other dynamic content and
will fluctuate considerably based on the complexity of the ASP
pages and the capacity of your Web server. If this counter is low
during spikes in traffic on your server, your applications may be
causing a bottleneck. Requests Executing indicates the number of
requests currently executing (i.e., number of active worker
threads). Request Wait Time indicates the number of milliseconds
the most recent request was waiting in the queue. Request Execution
Time indicates how many milliseconds the most recent request took
to execute. Ideally, Requests Queued and Request Wait time should
remain close to zero, but they will go up and down under varying
loads. The maximum number for Requests Queued is determined by the
metabase setting for AspRequestQueueMax. If the limit is reached,
client browsers will display "HTTP 500/ Server Too Busy." If these
numbers deviate a great deal from their expected range, your ASP
applications will likely need to be rewritten to improve
performance. Request Execution Time can be somewhat misleading
because it is not an average. For example, if you regularly receive
30 requests for a page that executes in 10 milliseconds (ms) to
every one request for a 500ms page, the counter is likely to
indicate 10ms, although the average execution time is over 25ms. It
is hard to give an ideal value for Requests Executing. If pages
execute quickly and don't wait for I/O (loading a file or making a
database query), this number is likely to be low (little more than
the number of processors when the machine is busy). If pages must
wait for I/O, the number of pages executing is likely to be higher
(anything up to AspProcessorThreadMax multiplied by the number of
processors multiplied by the number of processes hosting ASP). If
Requests Executing is high, Requests Queued is large, and the CPU
utilization is low, you may need to increase AspProcessorThreadMax.
When enabled, thread gating seeks to optimize Requests Executing.
The user's response time is proportional to Request Wait Time plus
Request Execution Time plus network latency. These counters are the sum of the ASP performance counters for each process hosting ASP, and there is no way to break them down by process. |
| Web Service\ CGI Requests/sec Web Service\ ISAPI Extension Requests/Sec | Reports the rates at which your server is processing CGI and
ISAPI application requests. If these values drop while under
increasing loads, you may need to redesign the applications.
|
| Web Service\ Get Requests/sec Web Service\ Post Requests/Sec | Reflects the rate at which these two common HTTP request types are being made to your server. POST requests are generally used for forms and are sent to ISAPIs (including ASP) or CGIs. GET requests account for almost all other requests from browsers and include requests for static files, requests for ASPs and other ISAPIs, and CGI requests. |
This section does not attempt to discuss the intricacies of tuning your Web applications; this section does provide recommendations for improving application performance. Consider the following while planning and testing your Web applications:
Related Topics