寻找瓶颈
1 了解你的系统
2 备份系统
3 监控和分析系统性能
4 缩小瓶颈范围,找到原因
5 通过修改一个因素,修复瓶颈
6 回到第3步,直到系统性能恢复到正常水平
你应该记录下每一步,尤其是你的修改,以及对性能的影响
收集信息
通常,你获得的第一手信息都是“服务器有问题”,关键是利用可能性因素来厘清和记录问题。有如下几个问题可以帮你更好的了解系统。
你能全面描述一下服务器的问题吗?
模式
使用时间
配置
外围设备
操作系统版本和更新级别
请告诉我具体的问题是什么?
- 症状是什么?
- 任何错误信息
有些人不能回答这些的问题,但是任何相关信息都有可能帮助你找到问题。例如,别人可能告诉你,“拷贝大文件到服务器的时候很慢”。这表明网络或磁盘子系统可能存在问题。
谁遇到这个问题?
是单一个人,一个用户组,还是整个部门? 这些信息可以帮助判断问题是部分网络出了问题,还是因为应用程序的问题,等等。如果只有一个用户出现问题,那很可能是这个用户的PC有不对劲的地方。
出现问题的客户端常常是解决问题的关键。由此看来,性能问题可能不是直接和服务器相关的:服务器和客户端之间的网络路径很容易导致问题。这个路径包括可网络设备和其它提供服务的服务器,例如域控。
问题能重现吗? 所有能重现的问题都可以解决。如果你对系统足够了解,你应该能够缩小问题范围到病根上,并且决定采取什么措施。
如果能重现,可以帮你更好的理解问题。记录操作对重现问题很有用:
- 重现问题的步骤? 知道步骤,可能会帮你在另外一台条件相同的机器上重现相同的问题。如果可行,那就可以使用测试环境的机器调试,避免生产服务器崩溃。
- 如果问题是断续出现的,第一件要做的事情就是收集信息,找到重现问题的条件。目的是使用脚本让问题在命令行出现。
- 问题是否在一天中特定的时间或者一周中特定的一天出现?这可能帮助你确定导致问题的原因。问题可能是在所有人开始上班或者去吃午饭的时候出现。寻找修改定时的办法(让它更常或者更少出现);那么,问题就重现了。
- 是否常见?如果问题是不能重现的,你可能推断是特殊条件下的问题,而且把问题作为已修复的。在现实中,它重新出现的可能性很大。一个 处理不可重现问题的好办法是在服务器上执行一般的维护操作:重启,升级系统的补丁和驱动。
问题是什么时候开始的?是缓慢浮现,还是迅速闪现? 如果性能问题是逐渐浮现出来,那可能是空间问题。如果出现得很突然,可能是由于服务器某个修改或者外围设备导致的。
是否对服务器做过修改(无论大小),或者改变了客户端使用服务器的方式? 是否是用户修改过服务器,或者外围设备导致的问题?是否有日志记录了所有网络修改?
业务修改可能导致需求的改变,也可能导致服务器和网络系统需求的改变。
- 是否和其它服务器或者硬件组件相关。
- 是否有日志可以查询
- 问题的优先级如何,需要在什么时候修复?
重要: 在做排错之前,备份所有数据和配置信息,以免丢失。
你应该要监控服务器,最简单的办法是在被监控服务器上运行监控工具。
应该在操作高峰记录服务器的性能日志,例如早9点到晚上5点,这取决于服务器提供的是什么服务,和谁在使用这些服务。在创建日志的时候,应该尽力把如下的数据记录在里面:
- 处理器
- 系统
- 服务器工作队列
- 内存
- 页文件
- 物理磁盘
- 重定向器
网卡
在开始之前,请注意性能调优的办法很重要。我们推荐的服务器性能调优过程如下:1 理解影响服务器性能的因素
- 2 根据当前服务器性能表现,设立基准线,用来和未来的测试数据做比较,找出性能瓶颈。
- 3 使用监控工具来找出性能瓶颈。通过接下来的章节中的方法,你就可以把瓶颈范围缩小到部分子系统上。
- 4 通过对造成瓶颈的组件执行某些操作,提升服务器性能。
注意:很重要的是,在其它组件具有足够能力维持高性能的时候,通过升级造成瓶颈的组件,可以获得极大的性能提升。
- 衡量新的性能。这一步可以帮助你比较调优前和调优后的性能差别。
在尝试修复性能问题的时候,注意:
- 衡量新的性能。这一步可以帮助你比较调优前和调优后的性能差别。
应用程序应该用适当的方法来编译,减少路径长度。
- 在做任何升级和修改之前做性能衡量,这样就可以知道修改是否有用。
- 除了检查新添加的硬件,还要检查重新配置过的旧硬件。
原文: https://lihz1990.gitbooks.io/transoflptg/content/03.分析性能瓶颈/3.1.发现瓶颈.html