美文网首页
MySQL监控&性能瓶颈排查

MySQL监控&性能瓶颈排查

作者: 古飞_数据 | 来源:发表于2022-10-04 18:37 被阅读0次

    当CPU长时间超过100%的时候该怎么办,
    说说如何快速定位性能瓶颈?
    top,vmstat,ps

    1.服务可用性
    2.服务性能
    3.服务负载趋势

    监控的意义&目的

    业务/数据库服务是否可用
    通过事务实时性能数据变化感知业务的变化
    数据库性能变化趋势判断服务器资源是否足够
    

    数据可靠性

    业务数据是否可靠
    服务可用,不代表数据就是正确的
    有可能误操作删除数据,或者其他意外原因丢失数据
    或者主从复制延迟,导致在从数据库无法读取到最新数据
    通过模拟随机业务逻辑来验证数据可靠性
    

    监控之关键指标

    常规运行情况汇总
    CPU:%user,%sys,%idle,%iowait,是否发生中断不均衡
    内存:free,cached,swap,是否有内存泄漏和OOM
    I/O:iops、吞吐、时延、利用率(%util)
    网卡:吞吐、注意小包发送频率
    mysqladmin ping 探活
    

    sys占比user高,是哪里的问题?
    除了vmstat、sar外,还有哪些趁手的硬件及操作系统层监控工具?

    系统监控

    常规工具
    top、free、ps、df
    sysstat(sar、vmstat、mpstat、iostat)、dstat、iotop
    netstat、ethstatus、arping
    
    其他工具
    perf
    pstack
    
    硬盘容量观测
    df -Th
    df -i
    
    datadir
    sys root
    sys tmp
    
    脚本地址
    https://github.com/zhishutech/mysqldba/blob/master/mysql-tools/dba_login.sh
    
    · top
    load avg不小,
    CPU是主要的瓶颈、
    可用内存还不少,
    I/O负载暂时看不出来
    

    什么情况下表示发生内存泄露了,怎么防范?

    free -h
    free -mt
    free -gt
    
    OOM=out of memory
    
    [root@backup ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1460         180         668           8         610        1118
    Swap:          2047           0        2047
    
    

    free详解

    used,已经使用的内存总量
    free,剩余物理内存
    shared,已废弃不用
    buffers,写缓冲
    cached,读缓冲
    实际可再分配内存:used + free + shared + buff/cache
    

    典型内存泄漏场景:
    当buffers+cached总和远小于used时,发生内存泄漏的风险等级为“高”。
    绝大多数,都是numa引起的内存溢出风险

    available

    当发现系统已经用到了swap,该怎么处理?
    建议直接在bios层关闭

    cpu消耗高的原因大概有几个 1)函数的运算 2)排序的进行 3)锁等待和争用

    sar详解

    -u,Report CPU utilization
    -d,Report activity for each block device
    -r,memory utilization statistics
    
    [root@backup ~]# sar -u
    Linux 3.10.0-693.el7.x86_64 (backup)    10/02/2022      _x86_64_        (2 CPU)
    
    10:42:42 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    10:42:44 PM     all      0.25      0.00      0.00      0.00      0.00     99.75
    10:42:46 PM     all      0.25      0.00      0.25      0.25      0.00     99.25
    10:42:48 PM     all      0.25      0.00      0.25      0.00      0.00     99.50
    10:42:50 PM     all      0.00      0.00      0.25      0.00      0.00     99.75
    Average:        all      0.19      0.00      0.19      0.06      0.00     99.56
    

    案例

    1. swap  导致 sys高
    2. 锁等待 导致sys高
    3. 硬件中断
    4. 短链接
    5. 时间戳
    热表 中有 timestamp 列, 参数文件配置了 time_zone=SYSTEM
    高并发场景下 导致sys高
    
    MySQL频繁的创建连接,短链接造成 sys高
    
    [root@backup ~]# sar -d
    Linux 3.10.0-693.el7.x86_64 (backup)    10/02/2022      _x86_64_        (2 CPU)
    
    10:42:42 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    10:42:44 PM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    10:42:44 PM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    10:42:44 PM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    

    相关文章

      网友评论

          本文标题:MySQL监控&性能瓶颈排查

          本文链接:https://www.haomeiwen.com/subject/kprsartx.html