Windows Server 2012 R2性能全面优化实战

2020-05-20 00:33顾武雄
网络安全和信息化 2020年5期
关键词:网卡内存页面

■ 顾武雄

初步完成部署的Windows Server 2012 R2 系统,无论是用来创建网站应用还是文件服务器等应用,其运行速度与稳定性都相当优越。但奇怪的是,只要持续运行一年半载之后,就会有用户反映连接速度变慢,开启文件的时间变长等问题。关于系统性能降低的问题,究竟是硬件问题、软件问题、网络问题还是系统配置不当所造成?如何解决?且看本文为大家提供问题诊断以及性能优化的良方。

Windows Server 简介

企业中任何新信息系统的导入,在基础架构的规划上除了需要做到高可靠度、高扩展性以及高可用性之外(俗称“IT 三高”),还必须考虑到运行性能层面的问题。当然这部分牵扯到的影响因素也相当多,包括了主机硬件、操作系统、拓扑设计、网络规划、存储规划和程序设计等。

然而对于一位Windows Server 的系统架构师而言,最重要的一件事就是先把整个拓扑架构中的每一部服务器,在最高安全的基础上,完成系统优化的调整任务,更积极的做法则是想尽一切办法,把Windows Server 的系统性能发挥到极致。如此一来,即便将来遇到应用系统性能降低的问题时,也能够缩小需要彻底检测的范围。

根据笔者过去在Windows Server 优化的调整经验,整体而言我们可以将它区分为事前调整与事后调整。前者主要是让系统人员先根据要导入的应用系统类型,包括了它所要采用的网站平台、数据库系统和数据存储方式等,再来决定所要准备的处理器规格、内存大小、网络设计、存储架构以及相关软件与系统服务的部署方式。

举个例子来说,当您准备在多部Windows Server 上部署Microsoft Exchange Server 时的环境准备,相较于在相同的操作系统条件下部署IBM Domino Server,其做法就会有很明显的不同,像是在存放数据的磁盘数组(RAID)规划上,由于双方无论是在数据库的架构设计还是访问方式上皆不一样,为了提升数据读写上的性能,前者会较适合采用RIAD 5而后者则是RIAD 0+1。

在接下来的内容当中,我们将整个系统调整的重点集中在Windows Server 2012 R2 本身,详解如何学习从基础的监视开始,来找出影响系统运行性能不佳的症结点,进而通过内置的管理工具以及原厂所提供的进阶辅助工具,协助提升现行网域、网络、网站以及操作系统本身的运行性能。

从性能监视中找问题

在Windows 任务管理的CPU 性能负载检测中,您可以选择以整体使用率或逻辑处理方式检测CPU 的性能。一般来说我们会建议采用后者的方式,因为如此一来就可以知道每一个核心资源的负载情形,根据经验,若系统人员发现有其中一个核心始终维持在100%的状态下,通常可能的原因会是某设备的驱动程序或固件尚未更新。当然也有可能是因为特定的Windows 更新程序所造成,只要移除后并重新安装往往可以解决此问题。

此外,对于采用服务器等级(或绘图任务站)专用的Intel XEON 系列CPU 时,您还可以进一步检测“NUMA节点”的性能状态。所谓的NUMA(Non-uniform memory access)即是非统一内存访问功能,此功能主要设计在多颗处理器的应用中,而内存的访问时间将依附在相对的处理位置,它的优点在于能够限制于特定的任务负载,尤其是针对某些数据的处理与所关联的任务与用户,善用线程对于从在本地内存,来配置缓冲区分页访问内存,会比从外部内存访问更有效率的特性,来大幅提升整体的处理性能。

举例来说,SQL Server就是典型的应用,它不需要特殊的配置设置就可在支持NUMA 的硬件上顺利执行,它会为每一个节点记录多模式配置信息及CPU 屏蔽,让客户端程序在连接时会绑定到其中一个NUMA 节点,以处理此客户端的所有批量要求,藉此提升SQL 脚本的执行速度。

除了CPU、内存状态以及硬盘的读写效率会影响系统的运行效率之外,网络流量的使用情形也是其中的关键因素。这是因为如今的许多应用程序设计,不再只是提供内部网络用户的访问需要,而是扩展到对于大量行动任务者的服务提供,也因此在服务器物理网络连接的规划上,更会针对不同的来源网络流量(例如VPN、Wi-Fi、VLAN 和iSCSI)进行分流监测与管理。

为此,您除了可以通过“任务管理员”中的个别网络连接,来进行实时的总流量监视之外,也可以通过右键选项来开启“检测网络详细数据”。这种检测方式的优点在于,可以让系统人员更清楚每一个字段属性的状态,并且可以借此比较各网络于本系统的使用情形,必要时可以进一步通过NIC 小组功能,来改善某些大流量网络的使用。

资源优化配置

当一台Windows Server 2012 R2 的主机上同时运行了多个网络应用系统时,我们除了需要根据它们各自的负载情况,来调整专属的网络连接之外,最好还能够依据它们的重要性,来调整它们对于资源使用的优先级。

在此,您除了可以对于特定运行中的执行程序,设置其优先级之外,还可以进一步配置它对于多核心CPU 资源的亲和性。

在处理器亲和性的配置页面中,我们可以让某些应用程序限定在特定CPU 核心数的使用。如此一来,当同时有许多应用程序都需要较多的处理器资源时,便不会让一些较重要的执行程序(例如w3wp.exe)因短缺资源,而造成性能的运行大受影响。

当上述的任一资源负载很大而无法降下来时,就必须进到更深层的资源查看器中,来揪出最终造成性能瓶颈的凶手。

可点击左下方的“开启资源监视器”连接继续。在“资源监视器”界面中,可以细看到每一支执行中的程序,对于CPU、内存、磁盘以及网络的资源使用情形。

其中在“网络”窗口中对于每一个程序的主机地址、发送及接收状态的观察更是重要,因为往往有发生像蠕虫一样的病毒感染时,其显著的中毒征状就是网络的数据包发送与接收量会异常的冲高。

善用性能监视工具

为有效避免当Windows Server 2012 R2 系统的运行发生性能不佳的情况时,不知道究竟是CPU、内存、存储设备还是网络所造成的问题,最好的做法就是在操作系统、所有设备驱动程序以及Windows 更新皆完成时,先创建好第一次的性能基线,等到所需要的应用系统或数据库等系统都完成上线之后,再来创建第二个性能基线。

有了上述两个性能基线,未来一旦发生在相同的系统条件下,有性能降低的情况发时,便能够再一次创建性能的记录,然后通过与前两次性能基线的比较,找出真正影响性能表现的主要原因。

先从“服务器管理员”界面中开启“性能监视器”界面。在此,您可以点击添加图标,来加入所要监测的资源使用率,在实时监测的过程之中,还可以随时切换折线图、直方图以及报告的监测。

图1 实时性能报告

如图1 所示便是实时性能的报告监测,这种监测方式可以很明确实时监测到某一些重要性能数据的变化。例如在这个范例中,我们除了可以监测几项常见的CPU、磁盘以及内存数据之外,请特别注意其中Memory 下的“Pages/sec”与System 下的“Processor Queue Length”,因此两者的数据在正常性能的情况下应维持在0 的状态,若是持续向上攀升时,前者肯定是内存不足,而后者则是CPU 的性能不够。此时您只有两条路可以选择,那就是增加更多的物理内存与升级CPU 的等级,或是移除高负载的应用系统。

创建性能基线

看完了实时监测主机性能的表现方法后,接下来就让我们来学习创建性能基线的方法。在“用户工具”的节点上,按下鼠标右键并点击“添加→数据收集器集合工具”继续。

接着在此页面中输入此新收集器的名称,以及决定要从内置的模板还是选择使用进阶的手动创建。在此我们选择后者,点击“下一步”按钮。

接着点击“添加”按钮来挑选所有想要监测的性能对象,并且设置想要的抽样时间。

请注意!每一次创建的性能基线,其所监测的对象清单与抽样时间务必要相同。最后可以决定是否要以特定的帐户来执行此数据收集器。然后便可以决定是否要立即启动这个数据收集器,或是想要开启此数据收集器的内容,以便设置自动执行的计划等设置。

完成了系统性能基线收集器的创建之后,您可以点击其“内容”来设置执行计划,或是通过鼠标右键来点击“开始”并在想要结束时点击“停止”即可。在性能收集后的图表报告检视中,您可以将想要监测的间距缩小至重点区域,像是CPU 与内存使用率较高的时间区段,然后再按下鼠标右键点击“缩放为”来进行该区段的放大监测。

最佳实践分析程序的使用

最佳实践分析程序(BPA,Best Practices Analyzer) 内置于Windows Server 2012 R2 的服务器管理工具中,主要用途在于针对现行已安装的服务器角色进行扫描,找出任何已知可能影响稳定以及性能的原因,并提供可行的在线解决方案。

以笔者的服务器来说,在BPA 分析结果中,就可以看到系统立即发现到两项可能影响文件服务器运作性能的设置,分别是Srv.sys 应该设置为依需求启动、应停用创建短文件名的功能,并且都有提供相对应的在线Technet 解决方案。

在此我们以解决第二项问题为例,原因是这个问题确实会为一台需要大流量访问的文件服务器,造成相当大的性能负担。

因此除非在您公司的网络中仍有其它应用系统,只能够唯一访问短档名的文件,否则唯有关闭描述中的创建短文件名功能,才能有效避开此问题的发生。

经由BPA 所诊断出来的每一个问题说明,其内容下方都会有一个超链接,点击后将会开启在线的解决方案。

我们可以依据此在线说明指引,先从“开始→执行”的方块中输入“regedit”,然后从“登录编辑程序”界面中切换至“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFile System”节点下,将可以看到许多文件系统有关的参数设置,包括了对NTFS 文件系统的压缩、加密以及配额通知频率设置等等,这些默认值您都可以根据实际文件系统运行的需要来进行调整。开启“NtfsDisable8dot3Name Creation”继续。

将“NtfsDisable8 dot3NameCreation”修改为1 即可。成功关闭默认创建短文件名的功能之后,后续系统便不会再为每一个经由各种途径,所存储的长文件名的文件,再来特别创建一个相对八个字符的主文件名与三个字符的扩展名,解除了可能严重降低文件服务器性能的第一个头号隐患。

Active Directory 问题诊断

对于部署在一个拥有良好Active Directory 基础下的Windows Server 2012 R2服务器,系统人员除了要养成定期对于每一部服务器,进行硬件设备与文件系统健康的检测习惯外,最好是还能够连同Active Directory的健康状态一并检测。只是要如何来进行呢?

很简单!建议您从两个方面去执行检测作业,首先是检测网域中各个控制站(DC) 的复写情形,这部分基本上只要善用Active Directory 专属的几 个Windows PowerShell Cmdlet 即 可,分 别 是Get-ADReplicationFailure、Get-AD Replication Attribute Metadata、Get-AD Replication Partner Metadata、Get-ADReplication Queue Operation、Sync-ADObject、Get-ADReplicationUpToDat enessVectorTable。

其中Get-ADReplication Failure 命令就可以帮您立即取得整个网域中所有域控制器点复写情形,或是仅检查特定域控制器点的复写健康状态。例如您可下达Get-ADReplicationFailure dc01.lab01.com。Sync-ADObject 命令则可以协助您针对网域中特定的对象,立即执行复写至选定的域控制器之中,以便检测复写的健康状态。

第二个部分则是同样必须在域控制器执行的操作,您只要善用“性能监视器”的“数据收集器集合工具”,在此可以发现它主要诊断的重点分别有追踪NT 的核心、追踪Active Directory 配置、相关性能计数器、设置Active Directory 登录档,就可以在“系统”节点下,看到一个内置名为“Active Directory Diagnostics”的数据收集器,请在按下鼠标右键之后点击“开始”即可进行持续5 分钟的诊断。如果想要查看此数据收集器的设置,请开启“内容”页面即可。

开启此数据收集器的“Active Directory”追 踪内容页面之后,从“追踪提供者”页面中,可以发现它主要追踪与收集数据的目标列表,包括了Active Directory 网域服务的核心、数据库、Kerberos 相关

组件等等。在完成“Active Directory Diagnostics”数据收集器的执行之后,将可以立即通过右键选单来开启最新诊断报告,或是从“报告→系统”节点上找到这一些曾经执行过的所有报告。在诊断结果的报告之中,除了可以先查看到此域控制器的所有性能数据之外,还可以进一步查看每一个检测目标的详细健康信息,包括了与Active Directory 运行息息相关的目录服务、LDAP、复写以及安全性帐户管理员等。

提升服务器网络速度

标准的服务器主机通常内置提供了4 组以上的网卡界面,但在您的企业主机房中,可能仅有少数几部主机会用到两组以上的网卡。一般当一台Windows Server 同时扮演多个应用系统的服务角色时,我们通常会让不同的服务连接不同的网卡与IP 网段,以分散网络传输时的流量负载。例如,您肯定得将定期备份的网卡与连接独立出来,然而面对一些大流量且重要的关键服务器,仅采用上述的做法恐显不够积极,因为您肯定迫切需要更大的网络带宽,最好还能够自动备份的网卡。

图2 添加NIC 小组

针对想要让网络带宽更大并拥有自动备份能力的需求,在目前的Windows Server 2012 R2 系统中,您可以考虑让多张网卡合并成所谓的“NIC小组(NIC Teaming)”,这种技术也可称为LBFO(Load Balancing and Failover),这意味着它可以做到网络负载均衡与容错备份的机制。做法很简单,开启“服务器管理员”界面,然后便可以在本地服务器页面中,看到目前的“NIC 小组”显示“已停用”,点击“连接”。

接着在“NIC 小组”页面中,将想要加入NIC 小组的的网卡,在连续选取之后右键点击“添加至新小组”继续。在如图2 所示的“添加小组”页面中,请先输入一个新的NIC 小组名称,然后再来设置其他内容的配置。首先在“小组模式”的下拉选单中,分别有静态小组、交换机独立和LCAP 三种模式。

其中交换机独立相当适合使用在文件服务器的连接访问,因为它会将客户端的文件下载要求,通过小组中的网卡来同时输出,可显著加速同时多文件的传输速度。而对于某些网站或应用,需要同时输出与输入流量,都能分散在多片网卡使用,则可以在支持的网络交换机上启用LACP功能,然后搭配NIC 小组的LCAP 模式支持即可。

配置网卡负载均衡模式

接着在“负载均衡模式”部分,如图2所示可以选择采用地址哈希、Hyper-v端口或是动态演算方式,其中地址哈希便是常见的根据网卡MAC地址、IP地址以及端口来作为识别。而Hyper-v端口顾名思义就是适用在虚拟机网络的作业环境,它也是根据其虚拟网卡的MAC地址来作为识别。最后的动态演算方式则是上述两者的混合。

最后在待命界面卡的下拉字段中,则可以挑选用来作为备份使用的网卡,一般来说我们就会使用两片网卡来做为流量的负载均衡,第三张网卡则可以用来作为待命使用。

在完成NIC小组创建后,网络连接页面中所会出现的NIC小组连接图标。若您的服务器主机有很多的网卡,可以再继续添加其他用途的NIC小组。当您再一次从“服务器管理员”界面中开启所设置的NIC小组时,便会看到目前待命中与作用中的网卡。

接下来建议您检查目前现行的网络卡,是否支持接收端调整(RSS,Receive Side Scaling)功能,此功能可以有效做到动态均衡处理器(CPU)中每个核心的负载。因为打从Windows Server 2012版本开始,其系统设计便已增强了RSS功能,支持配备64颗以上处理器的计算器,这意味着它将能够藉由分布式处理机制,来因应更高的网络流量负载。

此外,RSS功能也与Windows负载均衡(WNLB)和容错迁移(Cluster)解决方案兼容,且可以应用在DirectAccess的网络架构中,通过主动式均衡转寄流量的负载能力来改善其延展性。

而且,对于频繁访问文件服务器的Windows 7以上版本的客户端而言,可以通过一些登录档的修改,来提升整体连接的访问效率。请在通过“开始→执行”regedit命令之后,切换至“HKLMSystemCurrentControlSetServicesLanman WorkstationParameters”节点下,即可选择要修改的设置项,包括是否关闭带宽节流设置(Disable BandwidthThrottling)、设置文件信息最大快取(FileInfoCacheEntries Max)以及设置最大目录快取(DirectoryCacheEntries Max)。

其中,关闭带宽节流建议设置为1,而文件信息最大快取建议设置为32768,至目录快最大快取皆则建议修改为4096。

SPA分析工具的使用

想要有效找出影响Windows Server 2012 R2系统性能的症结点,并迅速通过相关的解决方案来改善运行性能,除了可以直接使用系统内置的检测工具,例如任务管理员、性能监视器、BPA工具等,您还可以到Microsoft网站上去下载一个名为服务器性能专家(SPA,Server Performance Advisor)的分析工具。

在完成下载后无需安装,只要在命令提示列中先执行extrac32.exe/e/a/l“d:SPA”“d:SPASPAPlus_amd64.cab”命令,来完成解压缩即可。

接着,在连续点击SpaConsole.exe程序后,即可开启管理界面。第一次使用请先从“File”下拉菜单中点击“New Project”项继续。

Microsoft Server Performance Advisor下载网址:

在“Create project database”页面中,必须设置所连接的SQL Server执行与要创建的数据库名称,您可以预先在本地计算机中下载与安装免费的SQL Server Express版本来使用即可(例如localhostSQLExpress),或是使用现行网络中其它服务器的SQL Server实例也是可以的。

至于数据库名称建议您输入SPA即可。点击“Next”继续。

Microsoft SQL Server 2014 Express下载网址:

在“Provision Advisor Packs”页面中,可以挑选所要安装的专家程序包,这包括了针对Active Directory一般性能、操作系统核心、Hyper-v服务器以及IIS网站服务的分析,其中Hyper-v的专家程序包并不包含对于Guest OS的诊断分析。点击“Next”继续。

在“Add Servers”页面中,请输入所有准备要进行诊断分析的Windows Server清单,并且输入一个UNC共享的网络活页夹,以便存放相关报告数据。

完成设置后点击“Test Configuration”按钮,来测试每一部服务器的连接是否能够成功。点击“Finish”完成设置,后续这项设置仍然可以随时进行修改的。

完成新项目的创建后,您就可以在管理窗口中勾选所有想要进行诊断分析的服务器,然后点击窗口右下角的“Run Analysis”按钮。接着请选择所要用来执行分析的专家程序包。

在此,还可以自定义收集数据的时间长短,以及设置重复收集数据的间隔时间,点击“OK”。

如图3所示在此分析报告中,可以发现有两则警告信息,分别是磁盘空间不足以及此操作系统安装于虚拟化环境的警示。

前者可通过磁盘清理工具来协助解决,后者则是建议不要用此Core OS专家应用来诊断虚拟化环境。

进一步您可以查看关于系统整体概观、CPU、内存、磁盘I/O以及网络I/O详细信息。

除了完成诊断分析后的报告检测,您还可以选择开启图表检视功能,在“Chart Date Range Picker”页面中,您可以设置所要检测的服务器、专家套件以及起讫日期的图表分析,点击“OK”。

接着您便可以从下方的窗口之中,挑选想要检测的性能对象,这包括了所有已收集来的CPU、内存、磁盘以及网络的性能信息。

图3 检测分析报告

在此您还可以通过上方的页签,来检测每周、每天或是每小时的性能趋势分析图表。

活用辅助监视工具

首先,Sysinternals Utilities主要由几个工具程序包类别所组成,分别是文件与磁盘、网络、处理程序、安全、系统信息以及杂项工具。

在每一个类别中都有许多相关的命令工具或图形界面工具,您可以选择直接下载整包程序包,或是仅下载所需要的工具程序包。接下来我们所要示范的几个工具,都隶属于处理程序类别的管理工具(Process Utilities)。此类别的工具大约有16个,我们仅示范其中的3个。

Sysinternals Utilities官方下载网址:

在Process Explorer小工具界面中,可以做到许多在“任务管理员”中所无法做到的管理操作。比如说,您可以从“Process”下拉选单或从任一执行程序,按下鼠标右键来选择可执行的功能,其中暂停执行中的程序功能(Suspend)、重新启动执行程序,以及从在线检视该执行程序是否可能为病毒等等,都是相当实用的管理功能。

至于设置程序的优先级或亲和性,也同样可以在此完成设置。

以暂停执行中的Chrome程序为例,此时状态便会显示为“Suspend”,这时候您可以再尝试去操作暂停中的Chrome浏览器,便会发现它将处于静止状态完全动弹不得,不过这并不会影响其它应用程序的正常运行。

当您开启“System Information”的页面,可能会感觉它与系统内置的“任务管理员”界面很像,您同样可以监测到整体摘要信息、CPU、内存、磁盘与网络I/O、GPU等性能信息。其中GPU性能在“任务管理员”中是没有提供的。

若从“GPU”性能监测中可以在引擎(Engines)选取页面中,可看到用以计算与监测GPU的使用率。

而当提到关于GPU(Graphics Processing Unit)的使用,想想看,若是在没有GPU支持的情况下,主机CPU就必须处理所有系统与绘图的处理作业,如此一来CPU的负载可能会爆冲,尤其是在目前强调4K解析与4D、5D等等的动画应用之下。

为此,若有显示界面的GPU便可以帮我们的计算机,分担调大部分的绘图处理作业,这样一来CPU肯定可以更专心地处理更多属于系统面的复杂运算任务。

高级任务管理工具

若是您觉得系统所内置的“任务管理员”,其内存的监测工具有些少,而想要使用更进阶的监测工具,不妨可以参考RamMap这个辅助工具。

在RamMap的窗口中,首先可以从“Use Counts”页面中,监测到不同属性类别内存的分配状况,包括了驱动程序锁定、核心堆栈、分页场以及对应档等,进一步您可以切换到处理程序、优先权摘要、物理分页以及文件摘要等页面中来查看详细信息。

开启“Physical Pages”的物理分页配置监测,将可以清楚监测到每个不同处理程序,以及相对应的程序属性类别,所占用的物理内存地址。这种监测方式很适合一些低级语言撰写时的侦错。

前面我们曾经提及过有一些性能的问题,是和系统启动时所自动执行的应用程序有关,主要原因是从系统部署的最初至今,许多IT人员早已经在不知不觉中,安装了许多应用程序而没有移除,其中Windows Server根据统计又以代理程序(Agent)居多。

想要知道究竟还有多少程序会在开机时启动,登录时启动或是某些应用程序执行时启动,建议您不妨通过一个名为Autoruns的辅助工具,来进行全面监测与管理。

而如图4所示便是Autoruns的管理界面,您可以从不同的页签中管理不同类型的自动执行程序。

这包括了开机执行(Boot Execute)、登录启动(Logon)、任务计划器(Scheduled Tasks)以及随附在IE浏览器而执行的组件等等。在上述范例中我们便可以在“Internet Explorer”页签,来将不需要的IE附加组件进行移除,例如我们将Microsoft OneDrive for Business的相关附加组件,在按下鼠标右键后点击“Delete”。完成移除后,当再次开启IE浏览器时,便可以在“管理附加组件”窗口中看到该组件确实已经被移除而非停用了。

图4 Autoruns管理界面

结语:

针对Windows Server 2012 R2系统性能的优化,不管调整的目标是操作系统本身,还是IIS网站应用程序、Hyper-v虚拟化服务或是其它附加的Microsoft应用程序服务,其调整的方法除了可以通过本文所介绍的几款内置工具,以及由官方所免费提供的简易工具之外,实际上还可以通过更完整的解决方案,那就是SCOM(System Center Operations Manager)管理工具,来同时集中监视大量的Windows Server/Client、Linux OS等跨平台系统与应用程序,并且做到实时预警的主动通知功能,甚至于还能够通过预先配置好的Script,来达到自动修复问题的机制。当然,您仍可以去评估更多的第三方监测工具,或是让双方的监测工具在服务端进行集成,如此便可以部署出分布式监测且集中化报告的大型管理架构,以符合现今许多全球化IT营运与多元异质系统的信息环境的管理需求。

猜你喜欢
网卡内存页面
刷新生活的页面
答案
联网全靠它 认识笔记本的无线网卡
让Word同时拥有横向页和纵向页
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
Server 2016网卡组合模式
内存搭配DDR4、DDR3L还是DDR3?
挑战Killer网卡Realtek网游专用Dragon网卡
USB故障又一原因