当你听到“性能瓶颈”这个名词,马上出现在你脑海中的形象应该是CPU、内存、磁盘和网络。不可否认,这些是寻找性能问题所在很好的出发点,但是它们并不是所有性能问题唯一的聚集点。以下我们将列出另外六个问题可能潜在的地方,当你在出现性能故障的时候就可以对其进行一一排除。有时候,知道问题的根源所在可以很好地防止你的个人系统崩溃。
请注意,以下排序不分先后。
1.CPU
CPU是电脑进行计算和指令操作的中枢。
CPU可以处理数以百万计的计算和指令,但是在这些操作超过负荷的时候,它的性能可能就会受到影响。当CPU支持大于75%的运算的时候,整个系统的运行速度就会减缓。CPU需要一些空间来承载不定时的数据冲击,在这个时候,工作负载可能会在很短的时间内达到100%。CPU负载是性能瓶颈的一个常见来源。
2.内存
关于内存的常规经验法则是“增加再增加”。当性能问题指向内存的时候,一般的共识是,增加更多的内存。不过,这种做法只能在短期内有效。其实,当性能瓶颈指向内存的时候,往往是因为欠缺的软件设计(内存泄露)或者其它的系统缺陷,只不过其表现为内存问题。解决内存性能问题的关键在于要在尝试增加内存之前找到真正的问题根源所在。
3.存储
磁盘速度、RAID类型、存储类型和控制器技术这些结合在一起就产生了我们所认识的磁盘I/O。磁盘I/O是系统管理员和用户们普遍焦虑的性能问题来源。这里有实际和物理的性能限制,即使是使用现在最好的磁盘技术也不例外。当在磁盘上结合和分离工作负载的时候,请使用最佳做法。
4.网络
网络往往被大家认为是一种常见的性能瓶颈来源,但是事实上并非如此。除非有一个网络组件发生硬件故障,比如交换机端口损坏、电缆损坏、网卡或者路由器配置出错。所以在你怀疑“网络”性能出现问题的时候最好检查一下其它地方。网络上感知到的运行缓慢问题通常应该指向本列表中的其它九项。
5.应用程序
虽然没有应用程序开发人员愿意承认,但是劣质编码的应用程序成为了硬件问题的导火线。处于静止状态的系统将严重受到应用程序启动并且没有任何迹象表明的关闭的影响。这是一场在系统管理员和开发人员之间一直在持续的斗争。他们都声称是对方的责任。不过,在进行了无数小时的硬件性能测试之后,人们发现,问题出在应用程序。
6.恶意软件
病毒、木马和间谍软件在由于恶意软件导致的性能问题中占很大一部分。在出现问题的时候,用户大多会抱怨网络、应用程序或者他们的计算机。这些性能杀手可能隐匿在一个或者多个服务器系统中、用户工作站中或者两者的结合体中。恶意软件的感染十分普遍,因此,你必须采取全方位的防御措施来阻止他们。杀毒软件、反间谍软件、本地防火墙和定期补丁能够帮助你保护系统并防止由此产生的性能问题。
7.工作负载
智能工作负载管理可以帮助你防止由于欠缺平衡的工作负载或者负载平衡计划设计不周而引起的性能问题。把另外一个系统添加到有问题的集群中去可以缓解它的工作压力。但是在虚拟环境下的物理机上似乎更容易完成这一操作。最好的建议是衡量所有系统的工作能力和性能并对报告给你的数据进行分析。转移工作负载,加强系统并小心留意它的表现。
8.故障或者过期的硬件
旧的硬件很容易出故障。硬件问题可能会导致系统重启、数据丢失,它的不可预测性让系统管理员们叫苦不迭。阻止这类悲剧最好的办法是保持硬件更新频率,使用冗余硬件,并对你的系统进行仔细的监控。
9.文件系统
你是否知道你对文件系统的选择可能会对性能产生深远的影响?答案是肯定的。有些文件系统,比如JFS,可能只占用很少的CPU。XFS拥有很高的可扩展性和性能。NTFS是一个可恢复的高性能文件系统。新的EXT4文件系统能够有效地支持庞大的文档。每种文件系统都有它自己的针对性,如果不能为一个应用程序选择正确的文件系统就可能导致灾难性的后果。慎重考虑你的文件系并做出适合你工作的正确选择。
10.技术
你为自己的基础架构所选择的技术在性能方面扮演着非常重要的角色。比如,如果你的服务致力于一个虚拟架构技术,你可能会遇到在物理系统中不曾见过的性能问题。另外,有些工作负载可以在虚拟技术中生机勃勃。例如,LAMP(Linux、Apache、MySQL、PHP)工作负载比在KVW上的速度更快。不过,集装箱式的虚拟化(OpenVZ、Parallels、Solaris Zones)拥有适合任何工作负载的性能。