摘自Unix和Linux系统管理手册:性能分析和调优经常被比作系统管理魔法。它们不是真正的巫术,但它们确实是科学和艺术。
这是邓小平同志会见Unix和Linux系统管理手册,第四版. |
|
文/ Evi Nemeth, Garth Snyder, Trent Hein, Ben Whaley Prentice Hall出版 ISBN-10: 0-13-148005-7 ISBN-13: 978-0-13-148005-6 |
|
通讯:注册和保存!获得特别优惠,免费章节,文章参考指南更新,并通过订阅InformIT时事通讯插入到行业发生在你角落的脉搏!注册后的免费优惠券!
现在就试试Safari在线图书吧!为程序员和IT专业人员访问最大的完全可搜索的电子参考图书馆!
性能分析和调优经常被比作系统管理魔法。它们不是真正的巫术,但它们确实是科学和艺术。“科学”部分包括仔细的定量测量和应用科学方法。“艺术”部分涉及以一种实际的、冷静的方式平衡资源的需求,因为优化一个应用或用户可能会导致其他应用或用户遭殃。生活中有很多事情,你可能会发现让每个人都开心是不可能的。
博客圈普遍认为,今天的性能问题与过去几十年大不相同。这种说法是不准确的。的确,系统变得更加复杂了,但是性能的基准决定因素和用于度量和管理它的高级抽象始终保持不变。不幸的是,基线系统性能的改进与社区创建吸收所有可用资源的新应用程序的能力密切相关。
最严重的性能问题通常存在于应用程序内部,与底层操作系统几乎没有关系。本章讨论的是系统级性能调优,而应用程序级的调优大多留给其他人。作为系统管理员,您需要注意应用程序开发人员也是人。考虑到现代应用程序的复杂性,有些问题只能通过应用程序开发人员、系统管理员、服务器工程师、dba、存储管理员和网络架构师之间的协作来解决。在本章中,我们将帮助您确定哪些数据和信息可以反馈给其他人,以帮助他们解决性能问题——如果问题确实存在于他们的领域。
在所有情况下,对你在网上读到的所有东西都持怀疑态度。在系统性能领域,您将看到关于各种主题的表面上令人信服的论证。然而,这些理论的大多数支持者并不具备设计有效实验所需的知识、纪律和时间。
以下是一些需要牢记的规则:
收集并查看系统的历史信息。如果系统在一周前运行良好,那么对系统变化方面的检查可能会让您找到确凿的证据。在你的后裤兜里保持有规律的基线和趋势,以便在紧急情况下拿出。第一步,检查日志文件以确定是否出现了硬件问题。
调优系统的方式可以让您将当前结果与系统以前的基线进行比较。
一定要确保您有一个回滚计划,以防您的神奇修复实际上使事情变得更糟。
不要故意让你的系统或网络过载。内核给了每个进程无限资源的假象。但是,一旦系统的资源被100%使用,内核就不得不努力维持这种假象,延迟进程并经常消耗相当大一部分的资源。
在粒子物理学中,你用系统监控工具收集的信息越多,你对你所观察的系统的影响就越大。最好依赖在后台运行的简单而轻量级的工具(例如sar或vmstat)进行常规观察。如果这些触感显示了一些重要的东西,您可以使用其他工具进行进一步的研究。
这里有一些你可以做的具体的事情来提高性能:
请确保系统有足够的内存。正如我们在下一节中看到的,内存大小对性能有很大的影响。如今,内存是如此便宜,您通常可以负担得起将每台性能敏感的机器都加载到内存中。
仔细检查系统和单个应用程序的配置。许多应用程序都可以进行调优,从而产生巨大的性能改进(例如,通过跨磁盘分布数据、不动态地执行DNS查找,或者通过运行一个流行服务器的多个实例)。
纠正使用问题,包括由“实际工作”(同时运行过多的服务器、低效的编程实践、批处理作业以过高的优先级运行、大型作业在一天中不适当的时间运行)和由系统(如不需要的守护进程)引起的问题。
尽可能消除存储资源对机械操作的依赖。固态磁盘驱动器(ssd)广泛使用,可以快速提高性能,因为它们不需要磁盘或电枢的物理移动来读取位。ssd很容易安装在现有老式磁盘驱动器的位置。
如果您使用UNIX或Linux作为一个web服务器或其他类型的网络应用程序服务器,您可能希望在多个系统中传播交通与商业负载均衡设备如思科的内容服务开关(cisco.com),北电Alteon应用开关(nortel.com),或织锦ServerIron (brocade.com)。这些框使得几个物理服务器在外界看来像是一个逻辑服务器。它们根据几个用户可选择的算法之一来平衡负载,比如“响应最快的服务器”或“轮询”。(当服务器宕机时,这些负载平衡器还提供有用的冗余。如果你的网站必须处理意想不到的流量高峰,它们是非常必要的。)
组织硬盘和文件系统,使负载均衡,最大限度地提高I/O吞吐量。对于特定的应用程序(如数据库),可以使用一种奇特的多磁盘技术(如条带RAID)来优化数据传输。向数据库供应商咨询相关建议。对于Linux系统,确保为磁盘选择了适当的Linux I/O调度器(有关详细信息,请参阅第1102页)。
需要注意的是,不同类型的应用程序和数据库对跨多个磁盘的响应是不同的。RAID有多种形式;花点时间确定哪种表格(如果有的话)适合你的申请。
监视您的网络,确保它没有被流量饱和,错误率很低。通过netstat命令可以获得丰富的网络信息,如840页所述。参见第20章,网络管理和调试。
确定在哪些情况下,系统根本不能满足对其提出的要求。你无法逃避这些情况。
这些步骤是按照效果的大致顺序列出的。在多个服务器之间添加内存和平衡流量通常会在性能上产生巨大的差异。其他措施的有效性从明显到不明显不等。
©版权所有培生教育。保留所有权利。