CPU 飙升或 load 飙升

CPU 飙升或 load 飙升

CPU 使用率飙升怎么办 ?

通过 toppspidstat 等工具,你能够轻松找到 CPU 使用率较高(比如 100% )的进程。接下来,你可能又想知道,占用 CPU 的到底是代码里的哪个函数呢?找到它,你才能更高效、更针对性地进行优化。

哪种工具适合在第一时间分析进程的 CPU 问题呢?我的推荐是 perfperf 是 Linux 2.6.31 以后内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。

# -g开启调用关系分析,-p指定php-fpm的进程号21515
$ perf top -g -p 21515
  • 用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题。
  • 系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题。

load 飙升怎么办 ?

iostatmpstatpidstat 等工具,找出平均负载升高的根源。

  • 平均负载高有可能是 CPU 密集型进程导致的;
  • 平均负载高并不一定代表 CPU 使用率高,还有可能是 I/O 更繁忙了;
  • 当发现负载高的时候,你可以使用 mpstatpidstat 等工具,辅助分析负载的来源。