软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件测试技术>>WEB测试>>正文
终极优化(4):使用 IIS 5.0 调整 Web服务器的艺术与科学
文章出处:转载 作者:先锋站长 发布时间:2006-02-07
  进程隔离

  iis 4.0 介绍了在进程外执行 web 应用程序的概念。这个功能为 web 服务器建立了更高的稳定性,但也产生相当大的性能成本。在 iis 5.0 中,进程外(out-of-process)应用程序的性能已获得改善,尤其是对 aps 更明显。不过,相较于 iis 5.0 进程内(in-process)的应用程序,还是有些性能降级的现象。除了更高的性能外,在进程外(out-of-process)执行应用程序的概念也有所延伸。您现在可以在一个缓冲池的(pooled)进程外环境中执行 web 应用程序。

  在 web 服务进程中执行的应用程序 (inetinfo.exe) 能产生更高的性能,但是因不良应用程序而导致 web 服务无法使用的风险也更高。建议的设置是让 inetinfo.exe 在自己的进程中执行、让负担重要任务的应用程序在自己的进程中执行 (高度保护),并让剩余的应用程序在一个共享的缓冲池进程 (中度保护) 中执行。若要获得最佳性能和可靠性,请以中度保护执行 asp 应用程序,并将所有 com+ 组件设置为链接库应用程序,而非服务器应用程序。

  如果决定在单独的进程中执行您的应用程序,或在单一的进程中执行其它应用程序,则必须从 ][主目录] 或 [虚拟目录] 属性页上的 [应用程序保护]下拉列表中选取 [高 (隔离的)] 或 [中 (缓冲池的)]。您应先建立一个应用程序目录并将它指定为「主目录」或「虚拟目录」(如果尚未这样做的话)。所有新应用程序默认会以中度保护执行。

  这些注册表设置及 metabase 内容的相关信息,请参阅〈附录 1︰性能设置〉。本节中所提功能的相关信息,请参阅 iis 5.0 及 windows 2000 联机文档。

  调整及疑难排除的建议

  如果您判定需要处理特定硬件驱动的性能问题,请考虑使用下列建议。

  ·  升级到较大的「l2 缓存」。如果判定需要添加或升级处理器,请选择有大型 (l2) 缓存的处理器。例如 iis 等服务器应用程序可以从大型处理器缓存中获益,因为它们的指示路径牵涉到许多不同的组件,而且它们必须存取大量资料。若想提升执行 iis 5.0 的服务器的性能,建议您使用大量处理器缓存(如果是处理器外部的缓存,建议使用 2 mb 或以上,如果在 cpu 芯片上,则请使用可用的最大值)。

  ·  升级到更快的 cpu。网络应用程序特别能从更快的处理器获益。

  ·  设置「活动的连接超时时间」。若要尽可能地抵抗网络等待时间,请设置活动的连接超时时间。如果您执行的是高传输量的网站,这将是非常重要的。开启的连接会使性能降级。connectiontimeout metabase 内容默认会设为 15 分钟。此内容的相关信息,请参阅〈附录 1︰性能设置〉。

  ·  使用「过期标题」。在所有静态及动态内容上设置「过期」标题,让这两种内容可以存放在客户端的缓存中。如此可加快响应时间、减少服务器上的负载及网络上的传输量。例如,您可以建立一个标题,指定如果用户已经造访过您的站点时,不要下载您公司的标帜 .jpg 檔。若要为静态内容设置「过期」标题,请使用 [http 标题] 内容页。若要为动态内容设置「过期」标题,请使用 response.addheader 方法。此方法的相关信息,请参阅 iis 5.0 联机文档。

  ·  确定已启用「asp buffering」。「asp 缓冲处理」默认会在全新安装 windows 2000 之后启用。如果是从 windows nt 4.0 及 iis 4.0 升级,您可能需要手动启用它。「asp 缓冲处理」可让所有来自应用程序的输出在通过网络传给客户端浏览器之前,先收集在缓冲区中。 如此可以降低网络传输量及响应时间。虽然缓冲处理可以降低响应时间,但可能会让用户察觉网页的速度变慢,因为除非网页已完成执行,否则用户看不见任何信息。审慎地使用 response.flush 可以改善交互的感觉。response.flush 方法的相关信息,请参阅 iis 5.0 联机文档。相关信息,请参阅〈附录 1︰性能设置〉中的 aspbufferingon metabase 项目。

  ·  延长连接队列及使用 http keep-alives。如果您判定您服务器的带宽不足以满足需要,并且正计划增加请求负载,则可以通过执行两个动作让网络带宽的使用更理想︰延长连接队列,及确定http keep-alives 已启用。

  每一个 iis 5.0 服务都有一个连接队列,而且皆设为 15 个项目。如果这个数字在负载量下不符合您的需求,则通过将 listenbacklog 参数添加到注册表中,并将此值设置为需要服务器维持的最大连接请求数目,即可增加它。相关信息,请参阅〈附录 1︰性能设置〉。

  http keep-alives 会保持客户端与服务器之间的连接,即使初始请求已完成也是如此。这个功能可以缩短等待时间、减少 cpu 负荷,及最佳化带宽。http keep-alives 是默认启用的。如果它们已停用,但您又想启用它们,请在 [internet 服务管理员] 中选取一个站点,开启该站点的 [属性] 页,并按一下 [性能] 选项卡后,再选取 [http keep-alives] 复选框。

  ·  缩小文件大小。您可以通过缩小服务中的文件大小来增进web服务器的性能。图像文件应以适当的压缩格式存放。尽可能限制图像及其它大型文件的数目。通过缩减 htmp 及 asp 程序代码也可以缩小文件大小。从 asp 页中删除不必要的程序代码区块,并确定您的 html 文件编写得很有效率。

  ·  将记录文件存放在个别的磁盘上,并删除不需要的信息。如果您的服务器控制了多个站点,则每一个站点会建有个别的日志文件;这些日志文件在向磁盘写入时会在您的服务器上造成瓶颈。您应该将日志存放在不同于 web 服务器的磁盘分区或磁盘上。另一个减少磁盘瓶颈的方法是避免记录不重要的信息。例如,您可以将所有图像文件放在一个虚拟目录 (例如 /images) 中,并停用该目录的日志。若要这样做,请开启该目录的内容页,清除 [日志查阅次数] 复选框,并按一下 [确定]。您也可以使用脚本文件或 isapi 过滤器来执行这项调整作业。如果您的站点是特别忙碌的大型站点,那么这项作业可以为您省下每天好几千兆的磁盘空间,以及大量的日志后处理时间。

  ·  使用 raid 及等量分配。若要增加磁盘存取,请使用 raid 及等量磁盘组。您也许要考虑使用一个有较大 ram 缓存的磁盘驱动器控制器。如果您的站点倚赖频繁的数据库存取,则请将数据库移到另一台计算机上。

  ·  需要时才使用「cpu 限制」。iis 5.0 介绍两种处理不良应用程序的新功能︰一个是进程记录,它会记录网站使用的 cpu 及其它资源;另一个是进程限制,它会限制网站可以使用的资源数量。

  进程记录及进程限制适用于 cgi (common gateway interface) 应用程序及在进程外(out-of-process)执行的应用程序。您无法为进程内(in-process)的应用程序或在新 iis 5.0 进程外缓冲池 (中度保护) 中执行的应用程序启动记录。

  若要启用进程记录

  1.  在 [internet 服务管理器] 中选取您要建立进程记录的网站。

  2.  开启站点的属性页,并按一下 [主目录] 选项卡。

  3.  在 [应用程序保护] 方块中选取 [高 (独立的)]。

  4.  在站点的内容页上按一下 [web站点] 选项卡,并确定选取 [启用记录]。

  5.  在 [web站点] 内容页上按一下 [属性] 按钮,并选取[扩充内容] 的 [处理帐户]。

  前两个步骤会将网站设置为在进程外执行,后两个步骤会启动该站点的进程记录。

  例如,如果您是 isp,且您的某个用户站点正在使用的 cpu 时间超过它应有的部份,您就可以启动程序处理记录并延长记录,以记下「工作对象」计数器的数值。有了从进程记录收集到的信息之后,您就可以决定是否要在您的安装中升级服务器、调整这位特殊用户的费用,或限制该站点可以使用的资源数量。

  在决定该用户的站点正在使用的资源数量之后,您可能想要限制这位用户只能使用您的可用资源中某个百分比的数量,这样可以释放资源供其它用户使用。若要限制站点的资源,请在进程外执行站点应用程序,然后按下列方式启用进程限制︰

  1.  在站点的内容页上按一下 [性能] 选项卡。

  2.  选取 [启用作业限制设置]。

  3.  在 [最大 cpu 使用] 方块中,设置该站点专用的 cpu 资源的百分比。

  4.  选取 [强行限制]。

  当站点达到预先设置的限制时,它会采取已定义的动作,例如降低进程优先级、中止进程,或中止站点。请注意,如果位于一个受限制站点内的虚拟目录是设置为程序中或缓冲池型程序的应用程序,则该站点实际上可能会超过表面上的处理器使用限制。进程内及缓冲池型程序的应用程序不会受到处理器限制的影响,而且不会含在处理帐户记录的统计中。

  ·  下列技术可协助您判定是否需要使用处理器限制︰记录「processor︰% processor time」、「web service: maximum cgi requests」及「web service: total cgi requests」计数器;启用处理帐户记录,让「工作对象」计数器包含在 iis 记录中;以及检查 dllhost 对象计数器以判定进程外(out-of-process) wam 及 isapi 请求的数目。

  您应注意作业限制有时会带来相反的结果。因为受限制的 dllhost 进程是以较低的优先级执行,所以不会快速地响应来自inetinfo 进程的请求。这会使得许多 i/o 线程受阻,于是降低了服务器的整体响应能力。如往常一样,只要做过任何一种改变之后,您都需要仔细地监视您的服务器在设置了启用作业限制之后,对性能带来哪些效果。

  测试、试验及正式启用

  在您利用 windows 2000 的 iis 5.0 当你的 web 服务器之前,很重要的一点是必须先在一个尽可能仿真真实情况的环境中测试您提出的设计。如此不但能帮助您找出服务器及您打算在这些服务器上运用的 web 应用程序可能存在的问题,也可保护您的线上服务器免受突发问题的干扰。最理想的状态是您可以在一个受控制的环境中进行测试 (例如实验室),并将不相关的流量隔离在服务器外。将测试服务器集中在测试您的硬件的设置状态及 web 应用程序能承受多大的压力。

  在您从 iis 4.0 成功升级到 iis 5.0 的过程中,测试扮演了极重要的角色。在您的测试环境中,可以发现到可能会在您的真实站点上造成严重状况的各类问题。其中包括将会影响 web 服务器性能的问题。您也许会发现必须添加更多 ram,或您打算在升级 iis 5.0 时一起运用的 asp 应用程序有太多问题,无法在网络上执行。如果能在测试阶段尽可能地解决这些问题,则顺利升级的几率就越大。

  建议您采用的做法是有计划地从 iis 4.0 升级到 iis 5.0。这牵涉到了在 iis 4.0 建立一套测试,执行这些测试,然后再将性能调整到最佳状态,并且在 iis 5.0 上执行相同的测试。这样做不但能让您找出任何与性能相关的问题,也可以让您估计可以从升级获得的性能增益。您可以使用例如「系统监视器」及「web 应用程序压力」等工具在测试期间分别监视性能和产生测试实例。

  一旦测试完成,建议您设置一个 iis 5.0 系统。这表示在一个比实验室更接近真实状态的环境中,让可以协助您测试服务器及应用程序压力的用户先试用您的服务器。使用公司内部网络是试验一个新部署的理想环境。在试验期间,您是在一个受控制的真实环境中测试您的设计,在此环境中的用户会使用新功能来执行他们的正常业务。请记住在整个试验期间继续监视服务器的性能。设计测试及试验部署的详细资料,请参阅 windows 2000 deployment planning guide。

  虽然测试及试验都是绝佳的作法,但是它们都无法完全复制您的 web服务器将面临的使用类型及负载。总之,测试及试验是在一个受控制的环境中发生,其中网络等待时间是最短的,而且早已知道生产中的请求种类及数量。当您的服务器及应用程序正式启用时,您会将它们暴露于整个 internet 及它的用户面前。

  在将 iis 5.0 部署到生产计算机之后,继续监视您的服务器是很重要的。如同本文先前所说的,这样才能让您建立用来判定性能高低与否的基准性能记录。每当您在生产服务器上进行更新后,不要忘记将新的数字拿来与基准数字作比较,这样才可以了解您的改变对于性能产生哪些影响。最好是能够一次做一个改变;否则会无法辨识出哪个改变产生哪种影响。如果一次作了多个改变,则很难判定出每一个改变的效果。如果性能没有如您预计的提升效果,请继续分析资料并按指示作调整。监视应定期进行,但调整性能设置值会随着时间增长逐渐变得不需要。

站内搜索
相关文章
◎终极优化(3):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎终极优化(2):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎终极优化(1):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎IT 架构和应用程序的端到端测试(3)
◎IT 架构和应用程序的端到端测试(2)
◎IT 架构和应用程序的端到端测试(1)
◎JWebUnit为Web应用程序创建测试用例的办法二
◎JWebUnit为Web应用程序创建测试用例的办法一
◎ASP.NET负压测试
◎Web测试工具对比--自动化功能测试(2)
◎Web测试工具对比--自动化软件测试(1)
◎Web的系统测试方法
◎web扫盲专题之入门概念
◎解决WEB性能测试中的验证码问题
◎你必须学会的几个常用网络测试命令
◎StrutsTest使用
◎基于嵌入式WEB的网络视频监控系统的设计与实现
◎分析数据库死锁原因的方法
◎Web下的整体测试
◎端口大全
◎网站测试技术简介
◎服务器加速技术一览
◎巧用net命令进行局域网文件批量同步更新篇
◎编写高性能WEB 应用程序的10 个技巧
◎主流七款web服务器软件点评(二)
◎主流七款web服务器软件点评(一)
◎巧用Behaviors检测浏览器
◎Web测试方法
◎基于Web的系统测试
◎Web体系结构发展规划
◎功能测试用例的书写方式
◎Web 测试的经验
◎使用Sql生成测试数据
◎对Web服务进行压力测试
◎使用HttpUnit进行集成测试
◎web应用程序测试方法和测试技术详述
◎Web应用程序的整体测试
热门文章
◎C/S和B/S的比较
◎Web测试方法
◎你必须学会的几个常用网络测试命令
◎压力测试实例
◎web应用程序测试方法和测试技术详述
◎web测试技术经典案例
◎网站测试技术简介
◎Web下的整体测试
◎功能测试用例的书写方式
◎端口大全
◎Web 测试的经验
◎强大的Web开源测试工具—Selenium
◎Web的系统测试方法
◎测试基于Web的应用程序
◎Client/Server测试
◎分析数据库死锁原因的方法
◎主流七款web服务器软件点评(一)
◎Web测试工具对比--自动化软件测试(1)
◎如何从用户的角度来测试Web应用软件
◎Web测试工具对比--自动化功能测试(2)
◎使用HttpUnit进行集成测试
◎Web应用程序的整体测试
◎对Web服务进行压力测试
◎基于Web的系统测试
◎如何测试web网站?
◎ASP.NET负压测试
◎web扫盲专题之入门概念
◎站点测试 Web Testing
◎使用Sql生成测试数据
◎主流七款web服务器软件点评(二)
◎Web测试手段
◎用webload进行web application性能测试(一)
◎基于嵌入式WEB的网络视频监控系统的设计与实现
◎测试Web Application之一:准备团队
◎解决WEB性能测试中的验证码问题
◎编写高性能WEB 应用程序的10 个技巧
◎评估网络测试的价值
◎StrutsTest使用
◎用webload进行web application性能测试(二)
◎网站测试技术
◎嵌入式Web视频点播系统实现方法
◎测试Web Application之三:进攻
◎巧用net命令进行局域网文件批量同步更新篇
◎测试Web Application之二:准备作战
◎开源Web自动化测试框架——Watir试用手记
◎Web体系结构发展规划
◎IT架构和应用程序的端到端测试
◎WEB应用程序的测试与优化
◎WEB测试资料
◎终极优化(1):使用 IIS 5.0 调整 Web服务器的艺术与科学

Google提供的广告