· Active Server Pages︰Requests/Sec、Active Server Pages︰Requests Executing、Active Server Pages︰Request Wait Time、Active Server Pages︰Request Executing Time 及 Active Server Pages︰Requests Queued。如果正在服务器上执行 ASP 应用程序,则这些计数器可让您了解这些应用程序执行的状况有多好。「Active Server Pages︰Requests/Sec」不含静态文件或其它动态内容的请求,它会根据 ASP 网页的复杂度及您 Web 服务器的容量明显地变动。如果这个计数器在服务器上的传输量处于尖峰期间出现低值的话,则您的应用程序可能会导致瓶颈。「Requests Executing」显示目前正在执行的请求数目;「Request Wait Time」显示最近的请求在队列中等待的毫秒数;「Request Execution Time」显示最近的请求花在执行上的毫秒数。理想的状态是「Requests Queued 」及「Request Wait Time」应保持接近 0,但它们会在不同的载量下起伏变动。最大「Requests Queued」数目是由 AspRequestQueueMax 的 Metabase 设置来决定。如果达到此限制,则客户端浏览器将显示 [HTTP 500/ 服务器太过忙碌]。如果这些数字大幅偏离了预计的范围,则您的 ASP 应用程序可能必须重写才能提高性能。由于「Request Execution Time」并非一个平均值,所以会有些误差。例如,如果您固定会接收一页 30 个请求,每页是以 10 毫秒到 500 毫秒的速度执行每一个请求,则即使平均执行时间超过 25 毫秒,但是计数器可能会显示 10 毫秒。要为「Requests Executing」说出一个最适当的值很难。如果页面执行得很快,而且不会等待 I/O (加载文件或提出数据库查询),则这个数字可能会比较低 (比机器忙碌时的处理器个数低一些)。如果页面必须等待 I/O,则执行的页数可能会较高 (接近 AspProcessorThreadMax 乘以处理器个数的值)。如果「Requests Executing」的值是高的、「Requests Queued」是大的,而 CPU 的使用率是较低的,则可能必须增加 AspProcessorThreadMax。启用时,传送的线程会试着最佳化「Requests Executing」。用户的响应时间会与「Request Wait Time」加「Request Execution Time」加网络等待时间的和成比例。
· Web Service: CGI Requests/sec及 Web Servcie: ISAPI Extension Requests/Sec 会报告您的服务器是以哪个速度处理 CGI 及 ISAPI 应用程序请求。如果这些值在负载增加时降低,则可能必须请求应用程序开发人员重新检查他们的程序代码。
附注-ASP 是个「ISAPI Extension」,包含在第二个计数器中。
· Web Service: Get Requests/sec及Web Service: Post Requests/Sec 反应这两个常见 HTTP请求类型是以哪个速度出现在您的服务器上。「Post Request」通常是用于窗体,并传送到 ISAPI (包括 ASP) 或 CGI。「Get Request」会记录几乎所有来自浏览器的其它请求,并包括静态文件、APS 与其它 ISAPI 的请求,以及 CGI 请求。
调整 Web 应用程序
IIS 5.0 对于服务静态 HTML 网页及配上默认的设置值基本就已足够了。如果您的站点主要是静态内容,则许多性能问题可能会与硬件有关。IIS 5.0 为 Web 应用程序提供不错的性能,但若想获得最佳的性能,还需要一些额外的调整。当然,不管服务器软件如何增强,与 Web 应用程序设计及程序代码有关的最佳经验方法的问题依然会存在。虽然本文没有试图讨论调整 Web 应用程序的细节,但本节仍提供一些使它们执行更快的指导及建议。在规划及测试您的 Web 应用程序时,请先考虑下列事项,然后再到实际联机运行的服务器上执行它们。
第一,ISAPI 应用程序比 Active Server Pages (ASP) 应用程序执行得更快,虽然 ASP 的开发费用远比 ISAPI 低。这两种应用程序都比 CGI 应用程序执行得更快。