Windows Server自带的互联网信息服务器IIS是架设网站服务器的常用工具,它是一个既简单而又麻烦的东西,新手都可以使用IIS架设一个像模像样的Web站点来,但配置、优化IIS的性能,使得网站访问性能达到最优状态却不是一件简单的事情,这里我就介绍一下如何一步一步的优化你的IIS服务器。 服务器端环境,我们以Windows Server 2003的IIS6.0为例,客户端环境为Mozilla Firefox 3.0,同时安装Yahoo的YSlow扩展。 YSlow是Yahoo开发者团队发布的一款基于Firebug的插件。用于分析网页,并根据一些高性能网站的规则进行相应的评级打分,对于网页性能优化有很好的帮助作用,告诉你那些部分影响了你的网页速度,并告诉你如何基于某些规则而进行优化。我们对于IIS的优化策略就是基于YSlow的。 使用安装了YSlow的Firefox打开目标网站,然后点击YSlow图标,点击Performance,如下图所示。 其中Performance Grade为YSlow对你网站的评级,A(100分)为最高,F为最低,后面列出如何进行修改,下面我以IIS 6.0为例介绍一下如何进行优化网站性能。 1、减少HTTP请求数量 这主要是修改网站代码,减少外部图片、CSS、JS等文件数量,手动合并多个CSS/JavaScript文件。IIS那里不用设置。 2、使用CDN 对于小网站来说,这个就免了吧。当然有钱人可以试试,可以从技术上解决用户访问网站响应速度慢的问题。 3、启用内容过期 对于静态文件启用内容过期可以提高访问性能。首先网站的目录要划分合理,图片、CSS、JavaScript均放在单独目录下,然后在IIS中选择目录,点属性-HTTP头,启用内容过期,可以选择30天后过去,这样,用户浏览器将比较当前日期和截止日期,以便决定是显示缓存页还是从服务器请求更新的页,由于图片、CSS、JS通常变化较少,因此基本上都从本地缓存读取,从而加快显示速度。 4、启用Gzip压缩 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如Gzip等压缩HTML、JavaScript或 CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。 使用方法是,右击“网站”->“属性”,选择“服务”。在“HTTP压缩”框中选中“压缩静态文件”,“临时目录”建议单独设置另一个盘的目录下。 之后,IIS管理器中,右击“Web服务扩展”->“增加一个新的Web服务扩展”,在“扩展名”中输入“HTTPCompression”,添加“要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”。 最后,使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml,在HcFileExtensions中增加需要压缩的静态文件后缀名,默认为HTML和TXT文件,建议再添加上js、css等,不要添加图片或ZIP等已经被压缩的文件。 5、将样式文件放在头部 这是基本的HTML代码风格,将所有的CSS文件都放在HTML页面的头部。 6、将脚本文件放在尾部 这也是基本的HTML代码风格,将所有的JavaScript文件都放在HTML页面的尾部。 7、避免CSS表达式 这点很简单,因为大多数人从来不用CSS表达式。 8、使用外部的JavaScript和CSS 将所有的JavaScript和CSS都做成外部文件的形式进行引用,这主要是为了让这些文件可以被浏览器缓存起来,参见第三点的介绍。 9、减少DNS查询 域名的DNS查询会带来额外的访问开销,减少页面内文件的主机域名数量,一个页面的主机域名保持在2-4个以内,这样就不会降低页面的装入速度。 10、压缩JavaScript文件 压缩脚本文件,删除不必要的字符,可以改善加载时间,目前有很多JavaScript文件的压缩工具,我这里有一个GUI界面的JS压缩工具供下载。 11、避免重定向 网页的重定向会带来额外的运行开销,因此要避免页面进行重定向跳转操作。 12、删除重复脚本 一个页面两次包含同一个JavaScript文件会影响加载的性能,因此需要将重复的脚本文件删除。 13、配置ETag 这是一个令人迷惑的问题。理论上说将服务器的ETag删除会提高HTTP请求的性能,但是按照微软官方提供的修改方法配置IIS 6.0,并没有实际效果,最终我使用了一个第三方的DLL文件,以ISAPI的方式实现了删除ETag的功能。 经过上面这些网站前端重构和WEB服务器的配置修改,我们的页面结构就变得更加规范,重构的页面大多都会取得不错的YSlow的评分,总体来说性能提升了不少。对于最终用户来说,也会明显感受到访问网站速度变快了很多,网站的浏览体验得到了较好的提升。 from http://www.w-link.org.cn/post/46.html
View Details1、禁止多余的Web服务扩展 IIS6.0支持多种服务扩展,有些管理员偷懒或者不求甚解,担心Web运行中出现解析错误,索性在建站时开启了所有的Web服务扩展。殊不知,这其中的有些扩展比如“所有未知CGI扩展”、“在服务器端的包含文件”等是Web运行中根本用不到的,况且还占用IIS资源影响性能拖垮Web,甚至某些扩展存在漏洞容易被攻击者利用。因此,科学的原则是,用到什么扩展就启用什么扩展。 如果企业站点是静态页面,那什么扩展都不要开启。不过现在的企业站点都是交互的动态页面比如asp、php、jsp等。如果是asp页面,那只需开启“Active Server Pages”即可。对于php、jsp等动态页面IIS6.0默认是不支持的需要进行安装相应组件实现对这些扩展的支持。不过,此时用不到的扩展完全可以禁用。 禁止Web服务扩展的操作非常简单,打开“IIS管理器”,在左窗格中点击“Web服务扩展”,在右侧选择相应的扩展,然后点击“禁用”即可。(图1) 2、删除不必要的IIS扩展名映射 IIS默认支持.asp、.cdx等8种扩展名的映射,这其中除了.asp之外其他的扩展几乎用不到。这些用不着的扩展会加重web服务器的负担,而且带来一定的安全隐患。比如.asa,.cer等扩展名,就可以被攻击者利用来获得webshell。因为一般的asp系统都会限制asp文件的上传,但如果没有限制.asa或者.cer等扩展名,攻击者就可以更改文件后缀突破上传限制,运行.asa或者.cer的文件获得webshell。(图 2) 删除IIS扩展名的操作是:打开IIS管理器,右键单击“默认Web站点”选择“属性”,点击“主目录”选项卡,然后点击“配置”打开应用程序窗口,最后根据自己的需要选择不必要的应用程序映射比如.shtml, .shtm, .stm等,然后点击“删除”即可。(图3) 3、取消访问记录 IIS6.0默认开启对于web的访问记录。当开启记录功能后,IIS会事无巨细地忠实记录所有的web访问记录。这些记录文件的内容是非常庞杂的,比如访问时间、客户端IP、从哪个链接访问、 Cookies等,另外还包括 Method(方法), UserAgent(用户代理)等。这些记录不但占用大量的磁盘空间还大大地影响了web服务器的性能。有人做过评测,停止访问记录可以提升5%到8%的 web性能。而且这些记录对于一般用户,特别是中小型的Web站点没有什么用途,简直太耗费系统性能了,因此建议关闭它。 取消访问记录的操作是:打开IIS管理器,定位到具体的web站点,右键点击选择“属性”,在“主目录”选项卡下取消对“记录访问”的勾选即可。(图4) 4、对访问流量进行限制 默认情况下IIS 6.0对于访问量是没有限制的,如果并发连接过大超过了Web的负载轻则发生网络拥塞,重则导致服务器宕机。因此需要对用户的访问进行限制,控制Web访问的流量。 打开“Internet信息服务”管理器,在其窗口右侧点击主机名前面的“+”号,依次定位到某个Web站点上。选中该Web站点右键单击选择 “属性”,在打开的属性设置窗口中选中“性能”标签,将“启用带宽限制”复选框选中,在随后被激活的“最大网络使用”设置框中,指定你的网络站点带宽的具体数值。大家可以根据服务器的性能及其访问量综合考虑继续设置。对于一般的企业站点将带宽流量设置为1500kb/s就差不多了。同时在“网站连接”下可以进行连接限制的设置,大家可以根据情况设置一个数值。完成以上设置后,IIS就只能使用其被授予的资源进行Web服务,杜绝了异常情况造成的服务器过载,为Web减负。(图5) 5、让Web负载自由伸缩 默认情况下IIS是全负荷地为Web提供服务的,这在一定程度上加重了Web负担。如何能够自动地根据负载变化自动调节工作进程呢? 利用IIS 6.0的Web园,我们只需指定用于某个应用程序池的工作进程的数量就可以了实现各个Web站点之间的隔离。具体的配置步骤是:在“Internet信息服务”管理器中打开应用程序池的“属性”对话框,转到“性能”页,在“Web园”下面的“最大工作进程数”输入框中输入进程数量。当服务器的负载较小,不需要额外的工作进程时,IIS 6.0在一定的时间后(默认20分钟,可配置)自动缩减实际的工作进程数量;如果负载变大,需要额外的工作进程,IIS 6.0再次增加工作进程数量。另外,还可以“启用CUP监视”,设置“最大CPU使用率”,“刷新CUP使用率值”以及“CPU使用率超过最大使用率是执行的操作”,这些设置可以根据需要进行设置。当一切设置完成后这一切就交给IIS自动进行,不需要管理员干预。 (图6) 6、配置应用呈现池 IIS可以支持多个Web服务,特别是虚拟主机一台服务器上有非常多的Web站点。如何才能做到各个站点之间相互独立,不因某些Web站点出现故障而影响其他站点呢?为不同工作进程指定应用程序池是个很好的解决办法。 (1)、创建 打开“IIS 管理器”中,展开本地计算机,右键单击“应用程序池”,选择“新建→应用程序池”。在“应用程序池名称”框中,输入新的应用程序池名称。如果点选选“将现有应用程序池作为模板”,可以在“应用程序池名称”下来列表中选择相应的应用程序池,最后单击“确定”即可。 (图7) (2)、指派 在“IIS 管理器中”,右键单击你要为其指派应用程序池的站点然后单击“属性”。在该站点的属性面板中“主目录”选项卡,在“应用程序池”下拉列表中选择刚才创建的应用程序池即可。如果所有的选项为灰色,单击“创建”按钮就可以输入“应用程序名”,然后在“应用程序池”列表框中,选择并指派网站的应用程序池了。(图 8) (3)、回收 利用“回收”功能,可是设置如何恢复系统资源进行IIS资源使用的灵活定制。打开“IIS 管理控制台”,单击“+”号依次“展开本地计算机→应用程序池”。选择你要回收的应用程序池右键单击选择“属性”,出现应用程序池的属性对话框,单击“回收”选项卡在其下可以设置“进程回收”、“内存回收”等,所有这些设置大家根据实际需要进行设置。(图9) 总结:通过上述IIS优化措施,Web服务器就能轻装上阵其性能将会有较大的提升。当然,要从根本上改善Web性能,仅仅进行软设置是不够的。另外,还需要进行硬件改造,软硬结合才是最完美的解决方案。 管理互联网信息服务器(Internet Information Server,IIS)大家都知道,它是一个既简单而又麻烦的东西,简单的是安装它几乎不需要费什么脑筋,选择一下路径,然后一路按“下一步”就可以完成;配置也比较简单,只要有一定的NT和网络知识,照着说明书就可以架设一个像模像样的Web站点出来。然而管理IIS却没有想像的那样简单。使用一段时间以后,管理员往往会遇上服务器性能不良的情况。这时候,IIS的性能优化,就尤为重要了。 导致IIS服务性能不良的原因有两个方面。一个是人为的,也就是说管理员在安装、配置IIS的时候没有进行优化或者配置错误。另一个则是客观上的,随着运行的服务种类,以及访问人数的增加,服务器原有的硬件配置已不能满足要求了,这就需要提高硬件配置。 在服务器配置上优化IIS性能 1.IIS高速缓存是对IIS进行优化时要考虑的最重要的项目之一。服务器保留了一部分内存空间用作IIS高速缓存,为将来的请求存储对象,这样IIS就可从高速缓存中检索对象而不用从硬盘中检索。 调整IIS高速缓存的容量需要修改注册表,表项如下: \HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \InetInfo \Parameters \MemoryCacheSize MemoryCacheSize的范围是从0道4GB,缺省值为3072000(3MB)。 IIS通过高速缓存系统句柄、目录列表以及其他常用数据的值来提高系统的性能。这个参数指明了分配给高速缓存的内存大小。如果该值为0,那就意味着 “不进行任何高速缓存”。在这种情况下系统的性能可能会降低。如果你的服务器网络通讯繁忙,并且有足够的内存空间,可以考虑增大该值。必须注意的是修改注册表后,需要重新启动才能使新值生效。 2.使IIS使用处理器时间最长。服务器的CPU处理器能力总是有限的。哪一个应用程序占用处理器的时间最长,谁的性能就能得到最大的提高。 (1)在NT的控制面板中,双击系统图标。 (2)单击性能标签。 (3)在应用程序性能下将游标拖到None的位置,这样就可以使所有正在运行的服务,包括IIS,使用处理器的时间达到最大值。 3.服务器属性设置。在服务器属性里有一项可以使网络应用程序的总处理能力最大的选项,你当然应该选择它。 (1)在桌面上右键单击网络邻居图标,然后选择属性选项。 (2)单击“服务标签”。 (3)单击“服务器”,然后按“属性”。 (4)选择最大化网络应用程序的总处理能力。然后单击“OK。” 提高硬件配置来优化IIS性能 […]
View Details