ASP.NET 和 IIS 6.0 的规划、测试和调优






4.71/5 (24投票s)
2004年11月18日
19分钟阅读

126705
一种主动式 IIS 6.0 服务器管理和 ASP.NET 性能调优与测试方法。我们将探讨编辑 Metabase 以扩展 GZip 的使用、线程、压缩、安全性、IIS 6.0 对象缓存以及其他许多主题。
因此,让我们充分利用性能测试/调优
然后更改 Windows 2003/IIS 6.0 的某些设置。
不幸的是,测试和调优过程的起点可能由谁首先遇到最大的问题来决定。会是服务器管理员、架构师、开发人员还是遇到性能下降的用户?如果用户发出大量抱怨,或者您预计随着新部署流量会迅速增长,您可能不希望因为不主动而措手不及。 也许你们所有人都希望与您的员工一起完成一些 ASP.NET 性能检查清单 上述链接中的主题简要列表包括
| ||||||||||||||||||||
当然,您将需要一个“MS Web 应用程序压力测试工具”进行一些测试: http://www.microsoft.com/technet/archive/itsolutions/intranet/downloads/webstres.mspx 然后您可以开始规划和调整您的 .NET 应用程序性能: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt16.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt17.asp | ||||||||||||||||||||
然后您可以开始利用这些信息并将其与许多 ASP.NET 操作指南文档进行比较 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenethowto.asp 主题包括
另请参见 http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/webapp/iis/iis6perf.mspx |
1) 那么让我们尝试一些事情并在实施后重新测试。
GZip - IIS 6.0:尽管目前这将对 Firefox 和 IE 6.0 浏览器用户有利,但它值得您关注。请注意,Gzip 的优势在于带宽和“感知”页面加载速度的提升。它还可以帮助减少服务器发送的字节数,因此对于大容量服务器来说,这可以产生更显著的结果。另请注意,可能会导致 CPU 利用率飙升。 检查您的可伸缩性并使用 GZip 头: GZip 的原始规范有时也很有用: |
编辑元数据库警告:如果元数据库编辑不正确,可能会导致严重问题,甚至可能需要重新安装任何使用元数据库的产品。Microsoft 无法保证因元数据库编辑不正确而导致的问题能够得到解决。请自行承担编辑元数据库的风险。 注意:在编辑元数据库之前务必进行备份。 有关更多信息以及帮助您解决其他问题的建议,请参阅 http://support.microsoft.com/?id=322603。 |
然后,请参阅 Brad Wilson 的 http://www.dotnetdevs.com/articles/IIS6compression.aspx,以获取进一步的说明和一个不错的跟踪工具。
http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/en-us/Default.asp?url=/resources/documentation/WindowsServ/2003/standard/proddocs/en-us/qos_utilbandwdth.asp |
2) 缓存、线程和 SSL - IIS 6.0 提供了更多功能,为什么不使用并调整它呢?(一些“亮点”。)
“Windows Server 2003 和 IIS 6.0 提供内核缓存。ASP.NET 页面可以自动受益于 IIS 6.0 内核缓存。内核缓存会产生显著的性能提升,因为对缓存响应的请求无需切换到用户模式即可提供。” 3
修剪页面“K”大小以恢复带宽处理大页面会增加 CPU 负载,增加网络带宽消耗,并增加客户端的响应时间。避免设计和开发完成多项任务的大页面,特别是对于每个请求通常只执行少数任务的情况。尽可能逻辑地划分页面。 要修剪页面大小,您可以执行以下一项或全部操作
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt06.asp -- 其中包含其他优化。 | |||||||||||||||||||||
重新计时 IIS 对象缓存 4考虑通过在注册表中添加 ObjectCacheTTL 条目来缩短未使用的对象在缓存中停留的时间,或延长已使用的对象在缓存中停留的时间。 注意除非别无选择,否则请勿编辑注册表。注册表编辑器会绕过标准安全措施,允许可能损坏系统甚至需要重新安装 Windows 的设置。如果您必须编辑注册表,请务必先备份,并参阅 Windows Server 2003 资源工具包配套 CD 或网站 http://www.microsoft.com/reskit 上的注册表参考。 重要您必须是本地计算机上 Administrators 组的成员才能运行脚本和可执行文件,或者您必须已被委派适当的权限。作为一项安全最佳实践,请使用不在 Administrators 组中的帐户登录到您的计算机,然后使用 runas 命令以管理员身份运行您的脚本或可执行文件。在命令提示符下,键入 runas /profile /User:MyMachine\Administrator cmd 以打开具有管理员权限的命令窗口,然后键入 cscript.exe ScriptName(包括完整路径和参数,如果有的话)。 重置未使用的对象在缓存中保留的时间 4
更改文件系统缓存与 IIS 6.0 工作集的平衡 默认情况下,运行 Windows Server 2003 的服务器在分配内存时(通过服务器属性“最大化文件共享的数据吞吐量”)配置为优先文件系统缓存而不是进程的工作集。尽管基于 IIS 6.0 的服务器受益于大型文件系统缓存,但优先文件系统缓存通常会导致 IIS 6.0 可分页代码写入磁盘,从而导致长时间的处理延迟。为避免这些处理延迟,请设置服务器属性以最大化网络应用程序的数据吞吐量。 最大化服务器上网络应用程序的数据吞吐量 4
限制连接数 如果您的服务器内存不足,限制服务器上的连接数可能有助于缓解短缺,因为系统用于跟踪连接的数据结构会消耗一些物理内存(每个连接约 10 KB)。有关限制连接以节省内存的更多信息,请参阅本章前面“限制连接以管理资源”部分。 如果您在工作进程隔离模式下运行服务器,可以限制应用程序池队列长度,以防止大量请求排队并使服务器过载。当队列长度限制功能启用时(默认启用),IIS 会在排队新请求之前监视指定应用程序池队列中的请求数量。使用 IIS 管理器更改应用程序池请求队列的默认限制 1,000 个请求。 如果将新请求添加到队列超过最大队列长度,服务器将拒绝该请求并向客户端发送 503 错误(服务器太忙)。但是,即使将限制更改为小于当前队列长度的值,已经排队的请求仍会保持排队状态。 使用以下过程为应用程序池设置队列长度限制。 4重要
有关使用元数据库属性配置应用程序池队列长度限制的信息,请参阅 IIS 6.0 帮助中“元数据库属性参考”中的 AppPoolQueueLength 属性。 调整 Windows 中的资源分配 4系统处理由 Windows Server 2003 管理,它可以分配处理器和内存资源给任务。如果您的服务器需要临时性能提升,您可以暂时调整 Windows 中的资源分配,以将资源分配到您需要的地方 有关更改 Windows 分配处理器资源方式的更多信息,请参阅 Windows Server 2003 帮助和支持中心中的“更改前台和后台程序的性能”。 请始终记住,性能日志记录会占用系统资源。当您不积极检查性能时,禁用与性能相关的日志记录可以从您的服务器中挤出更多的性能。 4 配置 SSL 会话的 ServerCacheTime 4如果您计划支持长时间的 SSL 会话,请考虑通过将 ServerCacheTime 条目添加到注册表来延长 SSL 缓存超时间隔。如果您预计有数千用户使用 SSL 连接到您的网站,请估计您希望 SSL 会话持续多长时间,然后将 ServerCacheTime 条目的值设置为略高于您的估计值。不要将该值设置得远高于您的估计值,因为由此产生的超时间隔可能会导致您的服务器在缓存中保留陈旧数据。
以管理员权限打开命令窗口,然后键入
配置 ServerCacheTime 注册表项 4
http://download.microsoft.com/download/7/4/f/74fe970d-4a7d-4034-9f5d-02572567e7f7/19_CHAPTER_6_Optimizing_IIS_6.0_Performance.doc <<<----- 完整书籍位于:http://www.microsoft.com/downloads/details.aspx?FamilyID=80a1b6e6-829e-49b7-8c02-333d9c148e69&DisplayLang=en#filelist,它将为您的服务器管理员和关心托管代码的人员提供大量精彩的“床边读物”。;-I |
到目前为止,您应该已经列出了一系列需要考虑的事项、需要实现的代码、需要更改的设置,以及更多用于做出主动决策的知识。