美文网首页
Linux操作进阶(导致CPU负载过高代码定位示例)

Linux操作进阶(导致CPU负载过高代码定位示例)

作者: Minority | 来源:发表于2020-03-10 20:18 被阅读0次

    1. 整机Command:top

    命令结果解析:

    • load average三个数表示一分钟、五分钟、十五分钟的平均负载值。若:(三个数相加 / 3) * 100% > 60%则代表系统的负担压力重
    • 不停按1还会打印出每个CPU的利用率
    • uptimetop的精简版:

    2. CPU Command:vmstat

    命令结果解析:

    • vmstat -n 2 3每2秒采样一次,共计采样3次
    • 使用vmstat主要是查看proc和cpu两个参数
    • 命令详解:



    CPU命令扩展:

    • mpstat -P ALL 2查看所有cpu核的信息(每两秒采用一次,打印出所有cpu)

      ide值表示CPU的空闲率
    • pidstat -u 1 -p [进程PID]每个进程使用CPU的用量分解

    3. 内存Command:free

    命令结果解析:

    • free查看系统的内存
    • free -m 会详细显示,free -g会四舍五入,所以尽量使用free -m
    • 扩展命令:
      pidstat -p [PID] -r [采用次数]查看某个进程对内存的消耗

    4. 硬盘Command:df

    命令结果解析:

    • 常用dfdf -h查看硬盘剩余空间数
    • df -h显示的数据更易读

    5. 磁盘I/O Command:iostat

    命令结果解析:

    • iostat -xdk 2 3磁盘I/O性能评估,重要参数为util
    • 扩展命令:pidstat -d [采样间隔] -p [PID] 查看额外

    6. 网络I/O Command:ifstat

    命令结果解析:

    • 使用ifstatifstat 1查看网络I/O,常用ifstat 1

    7. 查看进程 Command:ps -ef | grep

    命令结果解析:

    • 常用ps -efps -aux来查看所有运行进程的详细信息。或ps -l
    • 经常配合管命令 grep来具体查看某个进程的信息,ps -ef | grep [进程名/PID]

    8. CPU负载过高进程定位Demo(Java)

    过程解析:

    • 写一个demo运行,模拟cpu高占用


      1. 先用top命令找出CPU占比最高的


      1. ps-ef或者jps 进一步定位,得知是一个怎么样的一个后台程序给我们惹事
    • 3. 定位到具体的线程或者代码
      使用ps -mp [PID] -o THREAD,tid,time查看具体线程

      1. 将需要的线程转换为16进制格式,原为十进制(英文小写格式)


      1. jstack [进程ID] | grep [tid (16进制线程ID小写英文)] -A60
        执行命令
        精准定位

    参考:https://www.bilibili.com/video/av48961087

    相关文章

      网友评论

          本文标题:Linux操作进阶(导致CPU负载过高代码定位示例)

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