《企业私有云建设指南》一3.1.3业务信息系统需求
656
2022-05-28
2.6 监控管理
2.6.1 监控指标的设定和调整优化
当虚拟化和云计算技术被企业和数据中心广泛利用后,其对现有硬件提供更高的资源利用率和降低企业应用成本成为人们谈论的焦点,通常物理服务器的资源利用率只有10%~20%,因此通过虚拟化整合资源利用率低的服务器将非常有意义。
服务器虚拟化技术在近几年已经发生了根本性改变,现在虚拟化已经被视为数据中心实现灵活和弹性的必需品,虚拟化开销较低的服务器已经没有太大意义,越来越多的组织开始虚拟化整个业务乃至数据中心,这样组织可以将所有宿主服务器看作一个计算资源池,实现按需分配资源。
为了确保存储和服务器能应付不断增长的业务需求,对磁盘资源、内存和CPU资源、宿主操作系统进行监控和调整是必要的。
1.磁盘资源
服务器硬盘是磁盘资源中最慢的组件,在企业数据中心,注意仔细设计存储子系统,不要让它成为主要性能瓶颈,而最理想的办法是使用SAN,即使预算不允许,也要想办法确保磁盘资源争用不会导致虚拟机(VM)瘫痪。
首先应将宿主操作系统安装到专用硬盘上,注意不是专用卷,确保宿主操作系统不会与虚拟机抢夺磁盘资源。如果托管服务器可以连接外置存储,还可以考虑将宿主操作系统的分页文件移动到外置存储的专用驱动器上。
RAID阵列是满足虚拟服务器性能所必需的,至少应该选择使用RAID1,但“RAID1+RAID0”(RAID10)是更好的选择,因为它能提供容错,并且性能开销也比RAID5小。如果可以的话,给每个虚拟服务器分配一个专用磁盘阵列最好。
虽然存储阵列类型很重要,但阵列使用的硬盘也同样重要,如果两个或更多虚拟服务器共享一个存储阵列,那么应该考虑使用10k RPM的硬盘,它比7500 RPM的硬盘要贵一些,但性能表现却要好很多,当然这需要用户在性能和成本之间进行平衡。
另外不要忘了使用可热插拔的SCSI硬盘,不然换一块硬盘就得关闭系统,尤其是当多个虚拟服务共享一个存储阵列时,其影响面非常大。
不管使用哪种存储设备类型,都要确保已安装了合适的驱动。比如可以让Windows系统自动识别存储设备,虽然这样做本身并没有问题,存储设备也可 能会工作得很正常,但性能表现就不是很理想了。
使用固定大小的虚拟硬盘来配置虚拟服务器会获得额外的性能提升。虽然动态扩展虚拟硬盘很方便,但对服务器的性能是有影响的。
磁盘I/O性能监控的指标主要包括以下七个。
指标1:每秒I/O数(IOPS或TPS)
对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘I/O,磁盘的IOPS就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该 指标有重要参考意义。
指标2:吞吐量
吞吐量即硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为kbit/s、MB/s等。当传输大块不连续数据时,该指标有重要参考作用。
指标3:平均I/O数据尺寸
平均I/O数据尺寸为吞吐量除以I/O数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均I/O数据尺寸小于32KB,可认为磁盘使用模式以随机存取为主;如果平均每次I/O数据尺寸大于32KB,可认为磁盘使用模式以顺序存取为主。
指标4:磁盘活动时间百分比
磁盘处于活动时间的百分比即磁盘利用率,磁盘在数据传输和处理命令(如寻道)时处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就是说磁盘利用率越高,资源争用就越严重,性能就越差,响应时间就越长。一般来说,如果磁盘利用率超过70%,应用进程将花费较长的时间等待I/O完成,因为绝大多数进程在等待过程中被阻塞或休眠。
指标5:服务时间
服务时间即磁盘读或写操作执行的时间,包括寻道、旋转时延和数据传输等时间。其大小一般与磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过20ms,一般认为会对上层应用产生影响。
指标6:I/O等待队列长度
I/O等待队列长度即待处理的I/O请求数目,如果I/O请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O等待队列长度。
指标7:等待时间
等待时间指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果I/O请求持续超出磁盘处理能力,意味着来不及处理的I/O请求不得不在队列中等待较长时间。
通过监控以上指标,并将这些指标数值与历史数据、经验数据以及磁盘标称值对比,必要时结合 CPU、内存、交换分区的使用状况,不难发现磁盘I/O潜在或已经出现的问题。但如何避免和解决这些问题呢?这就需要利用磁盘I/O性能优化方面的知识和技术了。限于篇幅,在这里仅列出一些常用的优化方法以 供读者参考:
1)调整数据布局,尽量将I/O请求较合理地分配到所有物理磁盘中。
2)对于RAID磁盘阵列,尽量使应用程序I/O等于条带尺寸或者为条带尺寸的倍数。并选取合适的RAID方式,如RAID10、RAID5。
3)增大磁盘驱动程序的队列深度,但不要超出磁盘的处理能力,否则部分I/O请求会因为丢失而重新发出,这将会降低性能。
4)应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。
5)由于大多数数据库中已包括经优化后的缓存技术,数据库I/O宜直接存取原始磁盘分区(raw partition)或者利用绕过文件系统缓存的DIO(Direct I/O)技术。
6)利用内存读写带宽远比直接磁盘I/O操作性能优越的特点,将频繁访问的文件或数据置于内存中。
2.内存和CPU资源
物理内存是服务器虚拟机容纳数量的最大影响因素,应尽可能安装最多的内存,最好是主板支持的内存上限。此外,应给虚拟机分配合适的内存,给宿主操作系统预留足够的内存,避免内存不够用或过度分配。
有些虚拟化产品不限制管理员过度分配服务器的CPU资源,它们允许用户分配比物理CPU核心还多的虚拟CPU给虚拟机。为了获得最佳性能,宿主操作系统至少要预留两个CPU核心,以确保分配的每个虚拟CPU都有对应的物理CPU核心,否则就会出现“资源赤字”。
请记住,这些建议是基于最佳性能角度考虑的。虽然有时可以分配比物理CPU核心还多的虚拟CPU给虚拟机,性能也能维持在一个可接受的水平,但它一定不是最优的状态。一般建议CPU可以超配,但内存最好不要超配。
CPU和内存性能监控关键指标说明如下。
CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下一般可接受的上限不超过85%。
判断CPU是否是瓶颈的方法:一般情况下当CPU满负荷工作时,有时候并不能判定为CPU出现瓶颈,比如Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化,即CPU尽可能最大化使用。因此,一般主要从两方面来判断CPU是否为瓶颈:一是CPU空闲持续为0,二是运行队列大于CPU核数(经验值为3~4倍),即可判定存在瓶颈。CPU的高消耗主要由什么引起的?可能是应用程序不合理,也可能是硬件资源不足,需要具体问题具体分析,比如问题由SQL语句引起,则需要跟踪并优化引起CPU使用过高的SQL语句。
内存利用率:内存利用率=(1-空闲内存/总内存大小)×100%。
判断内存是否是瓶颈的方法:一般至少有10%可用内存,内存使用率可接受上限为85%。当空闲内存变小时,系统开始频繁地调动磁盘页面文件,空闲内存过小可能由内存不足或内存泄漏引起,需要根据系统实际情况监控分析和优化。
3.宿主操作系统
服务器虚拟化优化常常被忽视的一个方向是宿主操作系统本身对硬件资源的需求。不是所有虚拟化产品都依赖于传统的Windows服务器操作系统。例如,Hyper-V服务器是一个专门的、独立的产品,它比完整的Windows服务器操作系统的“身材”要小巧得多,因此它对硬件资源的需求就更少。
如果目标是最大化性能,那么最好使用独立的虚拟化产品,可以是VMware、Hyper-V或其他VMware类似的产品,但有时系统管理需求可能会要求你在宿主服务器上运行传统操作系统,在这种情况下,你可以采取一些措施来减少宿主操作系统的开销。
首先,确定宿主操作系统中的哪些进程是必需的,哪些是可有可无的,哪些是应该停止的,在任何情况下,宿主操作系统都应该只运行那些关键的应用,如备份代理或防病毒软件,其他非必需应用应该关闭或卸载。
其次,确保宿主操作系统上的防病毒软件不要扫描虚拟硬盘或与虚拟机相关的任何文件。扫描这些文件不但没有实际意义,而且会对服务器的性能造成影响,最糟糕的是,防病毒软件还可能损坏虚拟硬盘文件。
另一个优化技术是更改宿主操作系统的处理器调度方法,Windows服务器提供了一个设置,允许你调整处理器调度以优先满足运行中的程序或后台服务。对于虚拟主机,应该总是优先满足后台服务的需要。
最后,如果宿主服务器可以自动执行碎片整理,那么应该将碎片整理进程安排在空闲时段执行。同样,对虚拟机执行自动化碎片整理也应该安排在非高峰时段进行,同时要避免多个虚拟机同时执行碎片整理。
随着虚拟主机处理的负载越来越多,优化宿主服务器的虚拟化性能变得比以往任何时候都重要,通过优化可以确保资源池得到最有效的利用。
任务调度 虚拟化
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。