• linux性能监控


    缘起

    某个线上系统平时非常稳定,当大量更新数据时,系统的服务就会严重超时。问题存在了一段时间,基本猜测系统超时和大量写入数据有关,但却无法给出确切的解释。最近花了几天时间,深入研究这个问题。首先是需要给出问题原因的确切解释。因此,需要监控服务不正常期间linux系统的各种性能。

    Linux性能检测工具

    top -- 查看进程活动状态以及一些系统状况,常用于查看CPU、内存异常的进程PID。
    free -- 查看系统整体内存状况。
    vmstat  -- 查看系统状态、硬件和系统信息等。查看CPU使用情况、上下文切换情况、进程数(是否过多?)。
    iostat -- 查看CPU 负载,硬盘状况。常用于查看IO状况(查看CPU的工具很多)
    sar -- 综合工具,查看系统状况。这个太强大了,但自己一般只用类监控网络状况(sar -n DEV|EDEV)
    mpstat -- 查看多处理器状况,类似vmstat,适用于多CPU场景(还有非多CPU的服务器不?)
    netstat -- 查看网络状况。常用于:产看进程监听的端口、各个端口的recv|send队列状况(是否过载)、收发包的简单统计
    iptraf -- 实时网络状况监测。
    tcpdump -- 抓取网络数据包,详细分析。强大的网络包分析工具。
    tcptrace -- 数据包分析工具。
    netperf -- 网络带宽工具。
    dstat  -- 综合工具,综合了 vmstat, iostat, ifstat, netstat 等多个信息。

    监控脚本

    常用工具如上,一般情况下,直接启动命令看输出。但有时需要监控某个特定时间系统的运行状况,简单办法就是定时启动命令,并将命令输入打印到log, 或者使用诸如sar这类强大的性能监视工具。

    贴几个监控工具的包装脚本,结合crontab即可实现定时启动、收集一定时间间隔的性能数据。

    iostat:

    #!/bin/bash
    
    echo "$0 Start... "`date`
    echo 
    
    iostat -dmxt 1 $1  
    
    echo "$0 Finish. "`date`

    mpstat:

    #!/bin/bash
    
    echo "$0 Start... "`date`
    echo 
    
    mpstat -P ALL 1 $1
    
    echo
    echo "$0 Finish. "`date`

    netstat:

    #!/bin/bash
    
    NUM=5000000
    if [[ $# -gt 0 ]]
    then
            NUM=$1
    fi
    
    echo "$0 Start test...`date`"
    echo 
    
    #for i in `seq 0 $NUM`   # if NUM is large, waste much resource.
    #for i in {1..100}    # {1..100}  must be constant
    
    i=0
    while [[ i -lt $NUM ]]
    do
        echo `date`
            netstat -anp -u    # udp only  -t -- tcp
        
        echo 
        sleep 1
    
            ((i++))
    done
    
    echo "$0 Finish test.`date`"

    相关文章:

    Linux Debug tools
    linux 下的sar工具命令小结


    作者:zhenjing.chen
    出处:http://www.cnblogs.com/zhenjing/
    未注明转载的文章,版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
    Pytest 系列(27)- allure 命令行参数
    Pytest 系列(26)- 清空 allure 历史报告记录
    Pytest 系列(25)- 标记用例级别 @allure.
    Pytest 系列(24)- allure 环境准备
    基于Python的三种Bandit算法的实现
    博客迁移
    团体程序设计天梯赛2020游记
    P1825 [USACO11OPEN]Corn Maze S
    # JavaScript中的对象转数组Array.prototype.slice.call()方法详解
  • 原文地址:https://www.cnblogs.com/zhenjing/p/linux_monitor.html
Copyright © 2020-2023  润新知