小心十大性能瓶颈
2012-11-19沈建苗编译
沈建苗编译
当系统遇到性能问题时,你可能首先会想到几个典型的瓶颈,像处理器、内存、磁盘和网络。其实,这些只是开始寻找瓶颈的入手点,但它们不是惟一隐藏着性能问题的瓶颈。下面列出了常见的10个可能存在问题的瓶颈。
1. 处理器
处理器是计算机中执行计算和指令操作的核心部件。处理器可以处理数以百万计的计算和指令,但是,当这些操作的数量超过处理器的能力后,性能就会受到影响。如果处理器持续忙碌的时间超过75%,整个系统的运行速度就会减慢。处理器需要留出一些余地,以处理一些“突发”状况,使要处理的负载在很短的时间内达到100%。处理器负载是导致性能瓶颈的一个常见来源。
2. 内存
内存方面的一条经验法则法是“添加更多的内存”。当性能问题指向内存时,解决这个问题的一般做法是,添加更多的内存。不过,这个做法只会在短期内有效。指向内存的性能瓶颈常常归因于软件设计欠佳,造成内存泄漏(memory leaks),或者表现为内存问题的其他系统缺陷。要解决内存性能问题,其关键是在添加更多内存之前找到症状的根源。
3. 存储系统
磁盘的速度、RAID类型、存储类型和控制器技术共同组成了所谓的磁盘输入/输出系统。磁盘输入/输出系统是系统管理员和用户都很忧虑的性能问题的一个常见来源。就算使用当今最出色的磁盘技术,也有实际和物理的性能限制。合并和分离磁盘上的负载时,要运用最佳实践。尽管存储区域网络(SAN)很吸引人,但本地磁盘仍比速度最快的SAN要快。
4. 网络
网络经常被错怪成性能瓶颈来源,而实际上很少是这样。除非网络部件出现了硬件故障,比如交换机端口受损、电缆坏掉、网卡出现异常或者路由器配置有问题,否则应该看看其他环节,找出“网络”的性能瓶颈。网速明显变慢通常归因于本文提到的其他九个瓶颈中的一个。
5. 应用软件
尽管应用软件开发人员不爱听,但是,编得差劲的应用软件常常会以硬件问题的形式表现出来,而其实问题常常出在应用软件上,如某应用软件运行时,原本运行顺畅的系统性能大受影响;而当它停止运行后,系统的性能就没有任何问题了。性能问题出现时,系统管理员与开发人员经常会争执不停,互相指责对方。其实,结果经常是经过了数百个小时查找硬件性能后,发现原来错在应用软件上。
6. 恶意软件
在发现的性能瓶颈中,病毒、特洛伊木马和间谍软件占了很大一部分。当出现棘手问题时,用户老是抱怨网络、应用软件或者计算机,而降低性能的那些恶意软件可能隐藏在一个或者多个服务器系统上、用户工作站上,或者两者兼而有之。被恶意软件感染的现象很普遍,所以必须采用多层防御机制来防范。杀毒软件、反间谍软件、本地防火墙、网络防火墙和定期打补丁的做法,将有助于保护系统,防止由此带来的瓶颈。
7. 工作负载
智能工作负载管理有助于防止工作负载没有平衡好或者负载平衡方案考虑不周而引起的性能问题。为性能有问题的集群添加另一个系统,虽然这样可以减轻压力,但是这个步骤在虚拟环境下比在物理环境下更容易完成。这方面给出的建议是,衡量所有系统的能力和性能,并留意报告的数据,转移工作负载,添加系统,并留意性能。
8. 硬件出现故障或过时
硬件越旧,出故障的可能性就越大。有些硬件部件一下子就坏掉了,而有些经常出现随机性故障,却又查不出毛病。由于没法预测硬件何时会导致系统重启、数据丢失或性能瓶颈,这让系统管理员大伤脑筋。要防止这种灾难出现,最好的办法是保持硬件常新,使用冗余硬件,并认真监控系统。
9. 文件系统
所选择的文件系统是否会对性能产生深远的影响?答案是肯定的。有些文件系统(如JFS)使用的处理器资源很少;XFS具有很高的扩展性和性能;NTFS是一个可恢复的高性能文件系统;新的EXT4文件系统能够有效地支持超大文件。每种文件系统都有其用途,要是为应用软件选错了文件系统,就会带来严重后果。要慎重考虑和选择文件系统,应选择最适合处理你工作的文件系统。没有面面俱到的文件系统。
10. 技术
基础架构所选择的技术对于性能起着至关重要的作用。比如说,如果一项应用是基于虚拟化基础架构,那么,可能会遇到在物理系统上不会遇到的性能问题。另外,有些工作负载用虚拟化技术来处理速度很快,比如,LAMP(Linux、Apache、MySQL、PHP)工作负载用KVM来处理,就与用原生系统来处理一样快,甚至更快。不过,容器式的(container-type)虚拟化技术(OpenVZ、Parallels和Solaris Zones)声称,对任何工作负载来说,它们都能达到原生系统的速度。