• 生产环境中常用Linux命令


    太简单的我就不讲解啦,浪费时间,直接将生产中常用的

    1.总纲

    1. 整机:top
    2. cpu:vmstat
    3. 内存:free
    4. 硬盘:df
    5. 磁盘io: iostat
    6. 网络io:ifstat

    2.整机 top

    首先们要查询整机的状况 top -H
    在这里插入图片描述
    如果三个值得综合/3*100%>60% 就说明负担有点高啦,按下q按键退出

    其中uptime命令为负载均衡的精简版窗口
    在这里插入图片描述

    3.CPU vmstat

    命令 vmstat -n 2,3 2秒的时间,采样3个数据
    在这里插入图片描述
    在这里插入图片描述

    扩展:
    查看所有的CPU核信息:mpstat -P ALL 2 每两秒采样一次
    每个进程使用CPU的用量分解信息 pidstat -u 1 -p 进程编号

    3. 内存 free

    free -m 以MB的形式显示,更加精确
    在这里插入图片描述

    (如果没有安装,请执行 yum install sysstat)
    扩展:查看额外内存 pidstat -p 进程号 -r 采样的间隔数
    MEN 展示 的这个进程占用内容的百分比
    在这里插入图片描述

    top
    top -Hp pid
    printf %x 11129
    jstack -l 11095 |grep 11129 >> jstack.log


    按进程的CPU使用率排序

    运行top命令后,键入大写P。

    有两种途径:

    a) 打开大写键盘的情况下,直接按P键

    b) 未打开大写键盘的情况下,Shift+P键

    按进程的内存使用率排序

    运行top命令后,键入大写M。

    有两种途径:

    a) 打开大写键盘的情况下,直接按M键

    b) 未打开大写键盘的情况下,Shift+M键


    4. 硬盘: df

    df -h 查看磁盘剩余空间数
    du * -h | sort -hr | head -100 , 由大到小,查询前100个送占用磁盘的文件路径
    du /home -h | sort -hr | head -100 , 自定义路径
    在这里插入图片描述
    顺便分享下MySQL磁盘的定位分析

    //不用做修改,查看当前mysql连接下,每个库的总大小
    select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024/1024,2), 'GB') as data_size, concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size 
    from information_schema.tables 
    group by TABLE_SCHEMA 
    order by data_length desc;
    
    //修改 tp 数据库的名称,查看当前数据库下,每个表的总大小
    select TABLE_NAME, concat(truncate(data_length/1024/1024/1024,2),'GB') as data_size, concat(truncate(index_length/1024/1024/1024,2), 'GB') as index_size 
    from information_schema.tables where TABLE_SCHEMA = 'tp' 
    group by TABLE_NAME 
    order by data_length desc;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5. 磁盘IO iostat

    参数含义

    -c: 显示CPU使用情况
    -d: 显示磁盘使用情况
    -N: 显示磁盘阵列(LVM) 信息
    -n: 显示NFS 使用情况
    -k: 以 KB 为单位显示
    -m: 以 M 为单位显示
    -t: 报告每秒向终端读取和写入的字符数和CPU的信息
    -V: 显示版本信息
    -x: 显示详细信息
    -p:[磁盘] 显示磁盘和分区的情况

    具体的使用

    iostat -xdk 2 3

    每隔2秒,显示一次设备统计信息.总共输出3次, 显示的单位以kb为单位

    结果参数说明

    在这里插入图片描述

    具体参数参数含义
    rkB/s每秒读取数据量kb
    wkB/s每秒写入数据量Kb
    svctmI/O请求的平均时间,单位毫秒
    awaitI/O请求的平均等待时间,单位毫秒,值越小,性能越好
    util一秒钟有百分几的时间用于处理I/O操作,当达到100%时,标识磁盘宽带跑满,需要优化程序或者增加磁盘,是重要的指标

    排查总结

    1. 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷该磁盘可能存在瓶颈。
    2. 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
    3. 如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
    4. 如果avgqu-sz比较大,也表示有当量io在等待

    单独进程的磁盘IO pidstat -d 2 -p 进程号

    6. 网络IO ifstat

    默认本地是没有网络IO,下载ifstat

    1. wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tat.gz
    2. tar ifstat-1.1.tat.gz
    3. cd ifstat-1.1
    4. ./configure
    5. make
    6. make install

    在这里插入图片描述

    7: 内存过高的情景排查

    1: 利用top命令,得到占用内存最高的进程PID

    top
    
    • 1

    在这里插入图片描述
    2.查看此进程中占用CPU较高的线程排行

    ps -mp PID(这里替换) -o THREAD,tid,time|sort -rn|head -n 20
    
    • 1

    在这里插入图片描述

    3.将此线程id转换成16进制,为我们接下来的操作做准备。

    printf "%x\n" tid
    
    • 1

    4:用jstack查看一下

    jstack pid |grep tid -A 30

    在这里插入图片描述

  • 相关阅读:
    idea 全局maven 设置
    HTTP —— HTTP 响应详解, 构造 HTTP 请求
    c++/win32实现模拟windows鼠标键盘操作
    监控办公室电脑用什么软件?
    力扣:1848. 到目标元素的最小距离
    半解析快速傅里叶变换
    八皇后问题解法(Common Lisp实现)
    k8s 基础入门
    Xilinx FPGA SPIx4 配置速度50M约束语句(Vivado开发环境)
    24个Docker常见问题处理技巧
  • 原文地址:https://blog.csdn.net/qq_42292373/article/details/103848117