寻找瓶颈

  • 寻找瓶颈

  • 1 了解你的系统

  • 2 备份系统

  • 3 监控和分析系统性能

  • 4 缩小瓶颈范围,找到原因

  • 5 通过修改一个因素,修复瓶颈

  • 6 回到第3步,直到系统性能恢复到正常水平

你应该记录下每一步,尤其是你的修改,以及对性能的影响

收集信息

通常,你获得的第一手信息都是“服务器有问题”,关键是利用可能性因素来厘清和记录问题。有如下几个问题可以帮你更好的了解系统。

  • 你能全面描述一下服务器的问题吗?

    • 模式

    • 使用时间

    • 配置

    • 外围设备

    • 操作系统版本和更新级别

  • 请告诉我具体的问题是什么?

    • 症状是什么?
    • 任何错误信息

有些人不能回答这些的问题,但是任何相关信息都有可能帮助你找到问题。例如,别人可能告诉你,“拷贝大文件到服务器的时候很慢”。这表明网络或磁盘子系统可能存在问题。

  • 谁遇到这个问题?

    是单一个人,一个用户组,还是整个部门? 这些信息可以帮助判断问题是部分网络出了问题,还是因为应用程序的问题,等等。如果只有一个用户出现问题,那很可能是这个用户的PC有不对劲的地方。

    出现问题的客户端常常是解决问题的关键。由此看来,性能问题可能不是直接和服务器相关的:服务器和客户端之间的网络路径很容易导致问题。这个路径包括可网络设备和其它提供服务的服务器,例如域控。

  • 问题能重现吗? 所有能重现的问题都可以解决。如果你对系统足够了解,你应该能够缩小问题范围到病根上,并且决定采取什么措施。

    如果能重现,可以帮你更好的理解问题。记录操作对重现问题很有用:

    • 重现问题的步骤? 知道步骤,可能会帮你在另外一台条件相同的机器上重现相同的问题。如果可行,那就可以使用测试环境的机器调试,避免生产服务器崩溃。
    • 如果问题是断续出现的,第一件要做的事情就是收集信息,找到重现问题的条件。目的是使用脚本让问题在命令行出现。
    • 问题是否在一天中特定的时间或者一周中特定的一天出现?这可能帮助你确定导致问题的原因。问题可能是在所有人开始上班或者去吃午饭的时候出现。寻找修改定时的办法(让它更常或者更少出现);那么,问题就重现了。
    • 是否常见?如果问题是不能重现的,你可能推断是特殊条件下的问题,而且把问题作为已修复的。在现实中,它重新出现的可能性很大。一个 处理不可重现问题的好办法是在服务器上执行一般的维护操作:重启,升级系统的补丁和驱动。
  • 问题是什么时候开始的?是缓慢浮现,还是迅速闪现? 如果性能问题是逐渐浮现出来,那可能是空间问题。如果出现得很突然,可能是由于服务器某个修改或者外围设备导致的。

  • 是否对服务器做过修改(无论大小),或者改变了客户端使用服务器的方式? 是否是用户修改过服务器,或者外围设备导致的问题?是否有日志记录了所有网络修改?

业务修改可能导致需求的改变,也可能导致服务器和网络系统需求的改变。

  • 是否和其它服务器或者硬件组件相关。
  • 是否有日志可以查询
  • 问题的优先级如何,需要在什么时候修复?
    • 是否在接下来的几分钟要修复,或者一天内?你可能有一些时间修复它,或者已经进入恐慌模式。
    • 问题有多大?
    • 问题的相关开销是多少?

      分析服务器性能

重要: 在做排错之前,备份所有数据和配置信息,以免丢失。

你应该要监控服务器,最简单的办法是在被监控服务器上运行监控工具。

应该在操作高峰记录服务器的性能日志,例如早9点到晚上5点,这取决于服务器提供的是什么服务,和谁在使用这些服务。在创建日志的时候,应该尽力把如下的数据记录在里面:

  • 处理器
  • 系统
  • 服务器工作队列
  • 内存
  • 页文件
  • 物理磁盘
  • 重定向器
  • 网卡
    在开始之前,请注意性能调优的办法很重要。我们推荐的服务器性能调优过程如下:

  • 1 理解影响服务器性能的因素

  • 2 根据当前服务器性能表现,设立基准线,用来和未来的测试数据做比较,找出性能瓶颈。
  • 3 使用监控工具来找出性能瓶颈。通过接下来的章节中的方法,你就可以把瓶颈范围缩小到部分子系统上。
  • 4 通过对造成瓶颈的组件执行某些操作,提升服务器性能。
注意:很重要的是,在其它组件具有足够能力维持高性能的时候,通过升级造成瓶颈的组件,可以获得极大的性能提升。
    • 衡量新的性能。这一步可以帮助你比较调优前和调优后的性能差别。
      在尝试修复性能问题的时候,注意:
  • 应用程序应该用适当的方法来编译,减少路径长度。

  • 在做任何升级和修改之前做性能衡量,这样就可以知道修改是否有用。
  • 除了检查新添加的硬件,还要检查重新配置过的旧硬件。

原文: https://lihz1990.gitbooks.io/transoflptg/content/03.分析性能瓶颈/3.1.发现瓶颈.html