专栏首页二狗的DBA之路高性能:4-用于资源分析的方法【bpf performance tools读书笔记】

高性能:4-用于资源分析的方法【bpf performance tools读书笔记】

对于每种资源,检查:

1、 Utilization  使用率

2、 Saturation  饱和度

3、 Errors 错误

Linux 60秒分析

这个内容来自性能分析大神和Netflix性能工程团队

1、 uptime

2、 dmesg | tail

3、 vmstat 1

4、 mpstat -P ALL 1

5、 pidstat 1

6、 iostat -xz 1

7、 free -m

8、 sar -n DEV 1

9、 sar -n TCP,ETCP 1

10、 top

uptime

这是查看平均负载的快速方法,该平均负载指示要运行的任务(进程)的数量。在Linux系统上,这些数字包括要在CPU上运行的进程以及在不可中断I / O(通常是磁盘I / O)中阻塞的进程。这给出了资源负载(或需求)的高级概念,然后可以使用其他工具进一步探索。

首次响应问题时,可以检查平均负载,以查看问题是否仍然存在。在容错环境中,遇到性能问题的服务器可能会在您登录查看时自动从服务中删除。15分钟的平均负载过高,而1分钟的平均负载过低,则表明您登录得太迟而无法发现问题。

dmesg | tail

 [1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB,
file-rss:0kB
[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check
SNMP counters.

这将显示过去的10条系统消息(如果有的话),查找可能导致性能问题的错误。

上面的示例包括OOM killer和TCP SYN flooding造成的连接丢弃情况。TCP消息甚至指向您进行下一个分析区域:SNMP计数器。

vmstat 1

这是起源于BSD的虚拟内存统计工具,它还显示其他系统指标。

请注意,第一行数字是自启动以来的摘要(内存计数器除外)。

mpstat -P ALL 1

$ mpstat -P ALL 1
[...]
03:16:41 AM  CPU   %usr  %nice  %sys %iowait  %irq  %soft %steal %guest %gnice  %idle
03:16:42 AM  all  14.27   0.00  0.75    0.44  0.00   0.00   0.06   0.00   0.00  84.48
03:16:42 AM    0 100.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00   0.00
03:16:42 AM    1   0.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00 100.00
03:16:42 AM    2   8.08   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  91.92
03:16:42 AM    3  10.00   0.00  1.00    0.00  0.00   0.00   1.00   0.00   0.00  88.00
03:16:42 AM    4   1.01   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  98.99
03:16:42 AM    5   5.10   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  94.90
03:16:42 AM    6  11.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  89.00
03:16:42 AM    7  10.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  90.00
[...]

此命令显示按CPU时间划分成状态的时间。

输出显示了一个问题:CPU 0达到了100%的用户时间,这是单线程瓶颈的证据。

还需要注意到是否有iowait很高的情况出现。以及可以通过syscall和kernel tracing以及CPU分析来探索的%sys时间。

pidstat 1

pidstat(1)显示每个进程的CPU使用率。top(1)是用于此目的的流行工具;但是,pidstat(1)默认提供滚动输出,以便可以看到随时间的变化。

$ pidstat 1
Linux 4.13.0-19-generic (...)       08/04/2018     _x86_64_     (16 CPU)
03:20:47 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:20:48 AM     0      1307    0.00    0.98    0.00    0.98     8  irqbalance
03:20:48 AM    33     12178    4.90    0.00    0.00    4.90     4  java
03:20:48 AM    33     12569  476.47   24.51    0.00  500.98     0  java
03:20:48 AM     0    130249    0.98    0.98    0.00    1.96     1  pidstat
03:20:48 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:20:49 AM    33     12178    4.00    0.00    0.00    4.00     4  java
03:20:49 AM    33     12569  331.00   21.00    0.00  352.00     0  java
03:20:49 AM     0    129906    1.00    0.00    0.00    1.00     8  sshd
03:20:49 AM     0    130249    1.00    1.00    0.00    2.00     1  pidstat
03:20:49 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:20:50 AM    33     12178    4.00    0.00    0.00    4.00     4  java
03:20:50 AM   113     12356    1.00    0.00    0.00    1.00    11  snmp-pass
03:20:50 AM    33     12569  210.00   13.00    0.00  223.00     0  java
03:20:50 AM     0    130249    1.00    0.00    0.00    1.00     1  pidstat
[...]

此输出表明Java进程每秒消耗的CPU数量是变化的。注意这些百分比是所有CPU的总和,所以500%等于五个CPU的100%。

iostat -xz 1

此工具显示存储设备I / O指标。每个磁盘设备的输出列都在此处用换行符表示,因此很难读取。

free -m

推荐使用 -w 参数, 显示的更详细

sar -n DEV 1

sar工具具有用于不同度量标准组的多种模式。

在这里,我使用它来查看网络设备指标。检查接口吞吐量rxkB/s和txkB/s,以查看是否已达到任何限制。

图上可以看到 enp2s0f0的received接收到的流量在 985和 2817kb/s , sended 发出的流量在 847.7和965.78kb/s的样子。

sar -n TCP,ETCP 1

现在,我们使用sar(1)查看TCP指标和TCP错误。要检查的列:

active/s: 每秒本地启动的TCP连接数(例如,通过connect()) ,主动对外发起连接(可以理解为client模式)

passive/s: 每秒远程启动的TCP连接数(例如,通过accept())  ,被动接收外部连接请求(可以理解为server模式)

retrans/s: 每秒TCP重传的次数

主动和被动连接计数对于表征工作负载很有用。重新传输是网络或远程主机问题的迹象。

top

top命令,可以具备uptime的功能。此外还能按照cpu或者内存使用率排序、搜索指定进程。 总体而言,top命令具备很强大的process、cpu、mem瓶颈分析功能。这里不过多介绍。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • sql语句查看MySQL数据库大小

    参考链接:http://www.ttlsa.com/mysql/mysql-howto-find-the-database-and-table-size/

    二狗不要跑
  • MySQL binlog event 详解

    我也是只菜鸡,blog写的不对或者不严谨的地方还请大伙指出来,我及时改正,免得误人子弟。

    二狗不要跑
  • VMWARE里安装时Ubuntu16.04 出现'SMBus Host Controller not enabled'

    转载自:http://forum.ubuntu.org.cn/viewtopic.php?t=481315

    二狗不要跑
  • 用十条命令在一分钟内检查Linux服务器性能

    注:本文主要参考InfoQ文章用十条命令在一分钟内检查Linux服务器性能,在此基础上对涉及的Linux命令进行整理而成。

    九州暮云
  • Linux性能检测常用的10个基本命令

    【前言:通过《Linux系统层面调优和常见的面试题》,笔者详细介绍了Linux系统层面常用的调优方法和常见的面试题。本篇文章将介绍常用的进行性能检测的Linux...

    大数据学习与分享
  • 如何使用iostat查看linux硬盘IO性能

    TOP 观察:IO等待所占用的CPU时间的百分比,高过30%时IO压力高其次、用iostat -x 1 10

    砸漏
  • 红外光谱的理论计算

    在不破坏键合的条件下,分子内核-核之间的构型会发生变化,构成分子振动的基础。在偏离核间距不大的情况下,近似为抛物线,对应的振动为简谐振动。下图是两种典型的势能曲...

    用户7592569
  • Linux 下 Sysstat 系统监控程序详解

    Sysstat 包包含许多商业单位共有的各种实用程序,用于监控系统性能和使用活动:

    宋天伦
  • 如何 60 秒内进行 Linux 性能分析

    当你登陆一台 Linux 服务器之后,因为一个问题要做性能分析时:你会在第 1 分钟内做哪些检测呢?

    黑光技术
  • linux踩坑记录(持续更新)

    使用mac登录linux服务器时命令行有时候会出现"???"等乱码,这时候需要在~/.bashrc文件末尾中添加export LANG=C,保存然后执行sour...

    forrestlin

扫码关注云+社区

领取腾讯云代金券