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

2020-03-10  本文已影响0人  Minority

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

上一篇下一篇

猜你喜欢

热点阅读