风舞残阳 2007-9-13 11:23
X系列服务器上Windows Server 2003性能优化
<P>供稿人:戎方</P>
<P><STRONG>介绍</STRONG><BR><BR>Windows Server 2003是从Windows 2000 Server发展而来的,在系统内核和各子系统的性能上都得到了很大的提升。Windows Server 2003是从Windows 2000 Server被设计为自调节的操作系统,一般条件下系统可以提供良好的性能,但在一些特定情况下,指定服务器的设置和参数可以显著提高系统性能。<BR>技巧:建议每次只更改一项设置以观察系统性能的提升情况,如果更改设置引起系统性能降低,应该将此设置复原。</P>
<P><STRONG>Windows Server 2003家族</STRONG><BR>表1 Windows Server 2003家族:32位X86版本</P>
<P><IMG height=191 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-1.jpg" width=440></P>
<P><STRONG>处理器调度</STRONG><BR><BR>Windows使用抢占式多任务机制来分配CPU进程的优先级。这可以防止某进程独占CPU。我们推荐设置Background Services 保证所有的程序使用相同的CPU时间。设置步骤为:打开控制面板的系统→高级→性能→设置→高级,显示如图1</P>
<P><IMG height=337 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-2.jpg" width=440></P>
<P>图1 配置处理器调度</P>
<P>与以上图形界面相对应的注册表项是:<BR>HKEY_LOCAL_MACHINE\System\CurrentControlSet<BR>\Control\PriorityControl\Win32PrioritySeparation<BR>值38:best performance of Programs<BR>值24:best performance of Background services</P>
<P><STRONG>虚拟内存</STRONG><BR>Windows中,页面文件是Pagefile.sys,虚拟内存设置步骤如下:控制面板→系统→高级→性能→设置→高级→更改,如图2</P>
<P><IMG height=308 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-3.jpg" width=440></P>
<P>图2 虚拟内存设置</P>
<P>如果设置为让Windows系统管理虚拟内存,页面文件的大小将被设置为物理内存空间+1MB,这是当系统发生STOP事件(蓝屏)时存放memory dump的最小空间。<BR><BR>页面文件可以在不同分区上创建,最多16个页面文件,每个文件最大4GB。这些不同分区上的页面文件被系统作为一个大的页面文件使用。<BR>在同一个分区上创建多个页面文件不是最好的方式。</P>
<P>配置页面文件优化系统性能:<BR><BR>我们强烈不推荐使用RAID5阵列存放页面文件,因为页面文件的写强度非常大,这不适合RAID5阵列的特性。<BR><BR>如果可能,不要将页面文件放置在和操作系统相同的一块物理硬盘上——恰好是系统的默认设置。如果必须这样,那么请确认页面文件和操作系统放置在同一个分区,(如典型的C:)如果把它放在与操作系统相同的物理硬盘的其他分区,将增加硬盘的寻道时间,降低系统性能。原因是磁头将在操作系统分区和页面文件所在分区间来回切换,频繁移动。<BR><BR>记住第一个分区是位于硬盘的边缘,这里硬盘速度最快,性能最佳。<BR><BR>注意如果将页面文件移出引导分区,当系统发生蓝屏错误时将不能创建memory.dmp文件,来帮助分析故障原因。<BR><BR>我们通常推荐手工设置页面文件大小,这优于系统自动设置或根本不设置页面文件。最好将页面文件的最小容量和最大容量设置为相同值,这可以放置在动态调节页面文件大小时处理资源的遗失,尤其是在内存资源紧缺时;还可以确保页面文件在一个单独、连续的区域内,防止硬盘寻道时间增加。<BR><BR>Windows Server 2003自动推荐的页面文件的大小是物理内存的1.5倍,在硬盘空间充足的情况下可以将页面文件设置为内存容量的2倍。执行任务很少的服务器或硬盘空间紧张的情况下可以使用与内存相当的页面文件大小。</P>
<P><STRONG>文件系统缓存(file system cache)</STRONG><BR><BR>文件系统缓存是物理内存的一部分区域被用来存放对I/O子系统读写的最近经常访问的数据,包括在硬盘、网卡和网络间传输的数据。<BR><BR>文件系统缓存通过减少对I/O子系统物理设备的访问来提高性能。将经常使用的文件移动到文件系统缓存,磁盘读写操作减少,系统性能从而提高。<BR><BR>Windows Server 2003中的配置选项有两个:<BR><BR>第1个控制面板选项-文件和打印共享:<BR><BR>点击 开始-控制面板-网络连接<BR><BR>选择一个本地连接右键点击,选 属性<BR><BR>选择文件和打印共享,点击属性</P>
<P><BR>相应的注册表路径:<BR>_ HKLM\System\CurrentControlSet\Services\LanmanServer<BR>\Parameters\SizeHKLM\System\CurrentControlSet\Control\Session Manager\Memory<BR>Management\LargeSystemCache</P>
<P><IMG height=309 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-4.jpg" width=440></P>
<P>图3 文件和打印共享</P>
<P>表2 相应注册表项目</P>
<P><IMG height=107 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-5.jpg" width=440></P>
<P>_Maximize throughput for file sharing<BR><BR>这是默认设置,它对内存定位给予了比应用程序更高的优先级,适用于不运行其他程序的文件服务器环境。它需要充足的物理内存,因为更多的物理内存被分配给了文件系统缓存而不是应用程序。<BR><BR>_Maximize throughput for network applications<BR>此选项适合内存需求强度较大的应用程序服务器,应用程序的优先级高于文件系统内存。</P>
<P>第2个控制面板选项-系统性能:<BR>开始-控制面板-系统<BR>高级-性能-设置-高级</P>
<P><IMG height=352 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-6.jpg" width=440></P>
<P><STRONG>禁用或删除无用的服务</STRONG><BR><BR>当Windows安装后可能会有很多服务被打开,但它们可能并不是一个特定的服务器所需的服务,删除不必要的服务可以提高系统性能。<BR>以下步骤可以查看系统中正在运行的服务:<BR>右击 我的电脑 ,选 管理<BR>打开 服务和应用程序<BR>选择 服务<BR>点击 标准</P>
<P><IMG height=315 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-7.jpg" width=440></P>
<P>图5 Windows 服务</P>
<P>停止并禁用一个服务,可依如下提示操作:<BR>右击该服务选属性<BR>点击停止并设置启动类型为禁用<BR>点击确定返回。</P>
<P>表3 Windows 服务启动类型推荐</P>
<P><IMG height=409 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-8.jpg" width=440></P>
<P><STRONG>删除不必要的网络协议和服务</STRONG></P>
<P>不必要的网络客户端、服务和协议会占用系统资源,额外的协议还会增加网络流量负载,删除这些服务和协议可以释放资源,提升系统性能。<BR>TCP/IP协议是流行的主流协议,几乎可以只使用此协议即可完成大多数任务。<BR>以下步骤可查看网络客户端、服务、协议:<BR>开始-控制面板-网络连接<BR>点击 属性<BR>右击 本地连接<BR>点击属性</P>
<P><IMG height=326 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-9.jpg" width=440></P>
<P>图6 网络客户端、服务、协议</P>
<P>选择一个不需要的项目,点击 卸载。临时禁用该项目可以不选卸载,只把复选的对勾取消即可。一般TCP/IP网络只保留以下三项即可:<BR><BR>_ Client for Microsoft Networks<BR>_ File and Printer Sharing for Microsoft Networks<BR>_ Internet Protocol (TCP/IP)</P>
<P>优化网络协议绑定和提供者的顺序<BR>优化网络协议的绑定顺序和提供者顺序可以调节性能。<BR>协议绑定顺序<BR>一个系统可以支持不止一个网络协议,协议绑定到客户端和服务的顺序很重要</P>
<P><STRONG>其他注册表项优化</STRONG></P>
<P>禁用kernel paging<BR>拥有足够内存的服务器可以通过禁用windows操作系统内核部分,用户模式和内核模式的驱动程序的硬盘分页技术来获得性能的提升。此注册表项设置强制Windows保留内核(或执行代码)和驱动程序驻留在内存中,以便访问它们的时候可以获得更快的速度。</P>
<P><IMG height=83 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-10.jpg" width=440></P>
<P>有关更多信息,可参看:</P>
<P>heep://support.microsoft.com/?kbid=184419</P>
<P>优化Paged Pool大小</P>
<P>两种内核模式的内存池<BR>_The pagedpool(可以被分页成为pagefile)<BR>_The non-paged pool(不可以被分页)<BR><BR>如果内存资源受限制,不能正常分配内存到这两个内存池,系统性能和稳定性将受到严重影响。<BR><BR>系统启动时将内存动态分配给这两个内存池,可分页内存池最大默认值为491MB,不可枫叶内存池为256MB。<BR><BR>一些应用程序可以需求比系统默认更多的内存池空间,表5中注册值PagedPoolSize可以帮助确认是否有重组的内存池可用。<BR><BR>改变此设置需要重新启动操作系统。 </P>
<P><IMG height=309 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-11.jpg" width=440></P>
<P>表5PagedPoolSize值</P>
<P>设置此值为0*B71B000(192MB)给系统提供了较大的虚拟内存空间,最大可扩展到960MB。注意为取得比较好的效果,相应的SystemPages注册表值应设置为0.</P>
<P><IMG height=227 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-12.jpg" width=440></P>
<P>更多信息可参看:<BR>http://www.microsoft.com/resources/documentation/widows/2000<BR>/server/reskit/en-us/core/fnec_evl_fhcj.asp</P>
<P>增加I/O锁操作(I/O locking operation)的可用内存</P>
<P>默认状态下,Windows给I/O锁操作设定的内存限制为512KB,随着内存的增加,这个值可以做相应增加,如表6.<BR><IMG height=105 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-13.jpg" width=440></P>
<P>表6最大I/O锁操作内存限制值</P>
<P>表6的推荐值和表7中等同,取决于机器中实际物理内存的大小。由于现今大多数服务器的内存高于512MB,表7只列出了高于512MB的部分。</P>
<P><IMG height=146 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-14.jpg" width=440></P>
<P>表7loPageLockLimit的推荐值</P>
<P><IMG height=116 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-15.jpg" width=440></P>
<P>相应注册表值</P>
<P>更多信息可参看:<BR><A href="http://www.microsoft.com/windows2000/techinfo/reskit/en-us/regetry/29932.asp">http://www.microsoft.com/windows2000/techinfo/reskit/en-us/regetry/29932.asp</A></P>
<P>增加work items和nerwork control blocks</P>
<P>Windows Server Message Block(SMB)客户端和服务器端之间的最大网络请求数量是在客户端和服务器端的会话协商时确定的。协商的最大值由客户端和服务器端的注册表设置来确定。如果服务器端的值设定得太低,将限制客户端到服务器端建立的会话的数量。这在Terminal Server环境中是个显著的问题,客户端建立了大量并发应用访问到服务器端,并且使用了大量本地资源。</P>
<P>在LanmanServer和LanmanWorkstation注册表项中有三个键值可以调节系统性能:<BR>_MaxWorkltems<BR>_MaxMpxCt<BR>_MaxCmds</P>
<P>这些键值在注册表中不是默认就存在的,前两个选项是Server对话框的设置确定的。MaxCmds默认值是50.</P>
<P>MaxWorkltems值制定了接收缓冲或工作项目的最大数量,如果达到此限制,传输过程将初始化流控制,这将导致显著降低系统性能。</P>
<P>MaxMpxCt值设定了一个客户端到特定服务器端的并发请求的最大数量。此数值高可以提升系统性能,但需要使用更多的服务器工作项目(MaxWorkltems)</P>
<P>MaxCmds值指定了重定向程序能够保持的网络控制块的最大数量,也指定了可执行线程的最大并发数量,增加这个值可以提高网络吞吐量,尤其是当运行的应用超过15个并发操作时。</P>
<P>小心不要将这些值设置得太高,连接数量越多,服务器内存资源被占用得越多。如果设置设置太高,可能超出内存资源范围如分页内存池等。</P>
<P>提示:MaxWorkltems值至少是MaxMpxCt值的四倍。</P>
<P><IMG height=330 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-16.jpg" width=440></P>
<P>更多信息可参看:</P>
<P>http://support.microsoft.com/?kbid=232476<BR>http://support.microsoft.com/?kbid=271148</P>
<P>禁用NTFS最后一次访问更新</P>
<P>每个NTFS卷中的文件和文件夹都有一个属性叫Last Access Time。这个属性显示了文件和文件夹最后一次被访问的时间,如客户何时打开文件夹列表,往文件夹中添加文件,读文件,更改文件等等。维护这个信息将增加系统性能开销,特别是在大量文件和文件夹在短时间内被快速访问时,如备份程序。除去高安全性的环境下,维持这样的信息会增加系统负担,可以通过更新以下注册表项来避免这个问题:</P>
<P><IMG height=111 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-17.jpg" width=440></P>
<P>更多信息可参看:</P>
<P>http://www.microsoft.com/resources/documentation<BR>/windowsServ/2003/all/deployguide/en-us/46656.asp<BR>在Windows Server 2003中,也可以用以下命令来实现:<BR>fsutil behavior set disablelastaccess 1</P>
<P>禁用短文件名(8.3)生成</P>
<P>NTFS默认会为Windows中每个长文件名生成一个相应的符合8.3DOS文件名格式的短文件名,以兼容旧的操作系统。很多情况下这个功能可以被关闭,来提高系统性能。</P>
<P>注意在禁用短文件名生成前确认服务器上没有运行需要短文件名的DOS或16位应用程序,也没有任何用户通过16位应用程序或老的文件系统或操作系统访问这些文件。需要知道的是即便是最近的应用程序也可能因为更改了此设置而在安装过程中或运行时出现问题。</P>
<P><IMG height=104 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-18.jpg" width=440></P>
<P>在Windows Server 2003中,也可以通过以下命令实现此设置:</P>
<P>fsutil behavior set disable8dot3 1</P>
<P><STRONG>其他性能优化技术</STRONG></P>
<P>专门化服务器角色<BR>如果资金和操作资源允许,尽量使用专门的域控制服务器和专门的成员服务器。不要把活动目录,DNS,WINS,DHCP,验证服务等放到一台主要运行数据库,网络,邮件,应用等任务的服务器上。</P>
<P> </P>
<P>在高峰时段以外运行系统密集型操作<BR>一些密集操作会降低系统运行速度,如病毒扫描程序,备份程序或磁盘整理程序等。</P>
<P> </P>
<P>登出服务器控制台<BR>不必要德尔本地用户登录将消耗系统资源,潜在影响应用和服务的运行性能,所以应尽量登出本地用户。</P>
<P> </P>
<P>去掉消耗CPU资源的屏幕保护程序<BR>服务器并不是用来运行3D或OpenGl屏幕保护程序的,这些屏幕保护程序占用大量的CPU资源,避免安装此类屏幕保护程序,如果已经安装,尽量卸载它们。基本的Windows Server 2003和空白屏幕保护程序是最佳选择。<BR>同样的,不要使用占用很多内存的桌面墙纸。</P>
<P> </P>
<P>在所有卷上使用NTFS<BR>Windows支持多种文件系统,包括NTFS,FAT,FAT32,服务器的文件系统应选择NTFS。NTFS提供了比FAT和FAT32好得多的系统性能,另外还提供了很多安全性,稳定性,可扩展性和可恢复性的特性。<BR><BR>在以前的Windows版本中,FAT和FAT32常被应用于小容量的硬盘分区中(<500MB),速度是比较快的。现在由于硬盘价格的降低以及操作系统和应用程序的推动,硬盘不断增大,FAT和FAT32就不像在小硬盘卷上那样快了。FAT32虽然比FAT支持更大的空间,但也不是服务器文件系统的最佳选择。</P>
<P>FAT和FAT32 过去常被实用的原因是它们看起来有更好的可恢复性和可管理性,当出现问题时更容易使用DOS工具来修复。现在随着很多NTFS的修复工具内建在操作系统中或由第三方提供,已经不再存在使用NTFS文件系统是不是很好这种争论了。</P>
<P> </P>
<P>不要使用NTFS文件压缩<BR>虽然文件压缩可以降低磁盘空间的食用量,但这不适合用于企业级文件服务器,压缩会占用CPU资源。在使用压缩之前尽量考虑添加硬盘或存储,归档文件等其他选择方案。</P>
<P> </P>
<P>监控磁盘驱动器空间使用率<BR>硬盘上数据越少,操作速度就越快。因为在整理过的磁盘上,数据总是被写在尽可能靠近磁盘外缘的位置,这里是磁盘运转速度最快的位置,可以产生最佳的性能。<BR>磁盘寻道时间一般远远长于读和写操作的时间,随着对硬盘存储空间需求的增长和自由空间的减少,数据被写到靠近硬盘中心的位置,由于磁头从边缘移动到中心,寻道时间增加,导致 读写硬盘的时间变长,降低了磁盘I/O性能。监控磁盘空间使用率对于磁盘容量和系统性能都是很重要的。<BR>提示:让硬盘拥有过多的自由空间是不切实际的,作为一个惯例,一般保持自由空间约占硬盘总容量的20-25%。</P>
<P> </P>
<P>正确使用磁盘碎片整理程序<BR><BR>经过一段时间后,文件变成磁盘上非连续的碎片簇,系统性能因磁头在磁道间频繁跳跃及重组碎片而降低。磁盘碎片整理程序将文件碎片整理并存放在一个连续的磁盘空间,这是一个提高系统性能的比较方便的途径。<BR>提示:如果可能的话建议每晚都进行磁盘碎片整理。<BR>磁盘空间充足的情况下大多数碎片整理程序可以快速工作且取得良好的效果,这也是监控磁盘空间使用率的又一个很好的理由和原因。<BR>另外,运行碎片整理工具应该在服务器不忙的时段,最好在服务器下线的时间。<BR>Windows Server 2003和Windows 2000 Server内置了基本的碎片整理工具,提供了比较好的整理特性,但必须手动执行或通过外部脚本或调度工具调用。<BR>有一定数量的高质量的第三方磁盘碎片整理工具,包含了周密的调度,报告和统一管理功能。</P>
<P>正确使用审核和加密</P>
<P>审核和文件加密是两个重要的安全特性,但是同时也增加了系统资源和性能的开销尤其是CPU和内存资源。</P>
<P>尽可能减少审核和加密对系统性能的影响,确认仅审核必要的系统事件,文件系统区域,注册表等,仅加密确实需要加密的文件和文件夹。</P>
<P> </P>
<P>使用最新的驱动程序,固件和补丁包</P>
<P>安装最新版本的驱动,补丁,BIOS升级文件,微码,或固件在服务器维护中是很重要的环节。新版本驱动不仅能修复bug,提高系统稳定性,也能提高设备的性能和效率,提高系统整体性能。</P>
<P>微软发布的补丁包serbic pack更新系统代码和内核,及子系统组件,提高系统性能和增加系统功能。</P>
<P> </P>
<P>避免使用NET SERVER CONFIG命令<BR>net config server/autodisconnect:time<BR>net config server/srvcomment:"text"<BR>net config server/hidden:yes|no</P>
<P>上面几个命令在LanmanServer\parameters生成了几个需要的键值,也生成了一些其他的无关键值,这些键值的静态设置将禁用某些Windows自我调优功能,这个结果并不是所希望的,应当避免。</P>
<P>例如,管理员要在网络浏览列表中隐藏Windows计算机,运行以下命令:<BR>net config server/hidden:yes<BR>运行命令前Windows2000 Server注册表中LanmanServer键如图19</P>
<P><IMG height=196 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-19.jpg" width=440></P>
<P>图19 NETCONFIG命令运行前LanmanServer注册表值</P>
<P>运行后的注册表见图20</P>
<P><IMG height=368 alt="" src="http://www-900.ibm.com/cn/support/faqhtmlfaq/images/nav/p35-20.jpg" width=440></P>
<P>图20 NET CONFIG命令运行后的LanmanServer注册表值</P>
<P>此情况在微软知识库128167中有相应描述,可以在以下链接查询:<BR>http://support.microsft.com/?kbid=128167<BR>此文章介绍了如何清除不必要的注册表键值,保持需要的功能键值的方法。</P>
<P> </P>
<P>正确监控系统性能</P>
<P>直接在被监视的服务器上运行Windows系统(性能)监视器将影响系统性能,并潜在地使测试结果失准。</P>
<P>尽可能从远程使用系统监视器,避免给该服务器增加额外负担。同样,不要使用远程控制软件监控系统性能,也不要使用Terminal Service或Citrix等瘦客户机会话这类远程客户端会话来实现此任务。</P>
<P>监控的项目越多,消耗的资源越多。</P>
<P>频繁的监控增加了系统负担,并产生了非常大的日志文件,加大监控间隔时间,可以降低系统消耗,提高系统性能。</P>