美文网首页
笔记:用十条命令在一分钟内检查Linux服务器性能

笔记:用十条命令在一分钟内检查Linux服务器性能

作者: 周少言 | 来源:发表于2018-06-12 20:09 被阅读0次

    一:用十条命令在一分钟内检查Linux服务器性能
    二:linux 服务器性能监控
    三:分分钟拯救监控知识体系
    四:中小企业监控体系构建实战

    linux服务器性能调优
    https://www.cnblogs.com/ace-lee/p/6628079.html

    观其大纲:

    零:基础概念

    01 -负载均值(load averages)

    一:用十条命令在一分钟内检查Linux服务器性能

    01 uptime 快速查看机器负载情况
    dmesg | tail
    vmstat 1
    mpstat -P ALL 1
    pidstat 1
    iostat -xz 1
    free -m
    sar -n DEV 1
    sar -n TCP,ETCP 1
    top

    二:linux 服务器性能监控

    CPU、内存以及硬盘的关系是怎样的?
    进程和线程是什么?有什么区别?有什么优缺点?
    什么是物理内存?什么是虚拟内存?什么时候要用到虚拟内存?
    什么是CPU中断?CPU上下文切换?CPU缺页计算?
    怎么理解系统负载?如何通过load average的值来判断系统负载是否过高?

    三:分分钟拯救监控知识体系

    四:中小企业监控体系构建实战




    熟知概念

    零:基础概念

    01 负载均值(load averages)
    • 一、什么是系统平均负载(Load average)?
        在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢?
      Load Average是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。

    系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数
    如果一个进程满足以下条件则其就会位于运行队列中:
      - 它没有在等待I/O操作的结果
      - 它没有主动进入等待状态(也就是没有调用'wait')
      - 没有被停止(例如:等待终止)
      例如:

      [root@opendigest root]# uptime
      7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94
    

    命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量

    一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问 题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

    • 二、Load average的算法
        上面的输出数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的。如果这个数除以CPU的数目,结果高于5的时候就表明系统在超负荷运转了。算法摘自Linux 内核代码。

    • 三、/proc/loadavg 各项数据的含义
        /proc文件系统是一个虚拟的文件系统,不占用看/pro磁盘空间,它反映了当前操作系统在内存中的运行情况,查c下的文件可以了解到系统的运行状态。查看系统平均负载使用“cat /proc/loadavg”命令,输出结果如下:
        0.27 0.36 0.37 4/83 4828/
        前三个数字大家都知道,是1、5、15分钟内的平均进程数(有人认为是系统负荷的百分比,其实不然,有些时候可以看到200甚至更多)。后面两个呢,一个的分子是正在运行的进程数,分母是进程总数;另一个是最近运行的进程ID号。

    • 四、查看系统平均负载的常用命令
      cat /proc/loadavg
      uptime:
      w: 显示目前登入系统的用户信息。
      top: 显示,管理执行中的程序。
      tload : 显示系统负载状况。

    一:用十条命令在一分钟内检查Linux服务器性能

    01 uptime 快速查看机器的负载情况

    $ uptime    
    23:51:26 up 21:31,  1 user,  load average: 30.02, 26.43, 19.02
    

    快速查看机器的负载情况。

    02 dmesg | tail
    该命令会输出系统日志的最后10行。示例中的输出,可以看见一次内核的oom kill和一次TCP丢包。这些日志可以帮助排查性能问题。千万不要忘了这一步。

    03 vmstat 1
    每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面跟的参数1,表示每秒输出一次统计信息

    04 mpstat -P ALL 1
    该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。

    05 pidstat 1
    pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态。如上的输出,可以看见两个JAVA进程占用了将近1600%的CPU时间,既消耗了大约16个CPU核心的运算资源。

    06 iostat -xz 1
    iostat命令主要用于查看机器磁盘IO情况

    07 free -m
    free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。

    08 sar -n DEV 1
    sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。

    09 sar -n TCP,ETCP 1
    sar命令在这里用于查看TCP连接状态

    10 top
    top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。

    相关文章

      网友评论

          本文标题:笔记:用十条命令在一分钟内检查Linux服务器性能

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