zoukankan      html  css  js  c++  java
  • 【Linux】系统故障排查常用命令

    整机:top

    查看整机信息:top命令+uptime命令

     

    CPU:vmstat

    查看CPU:vmstat

    每2秒采样一次 一共采样3次

    procs进程信息:

    • r 是运行和等待CPU时间片的进程数,原则上1核CPU的运行队列不要超过2,整个系统的运行队列不能超过综合书的2倍。否则系统压力过大。
    • b 是等待资源的进程数,比如正在等待的磁盘IO、网络IO等。

    cpu信息:

    • us 是用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,需要优化程序
    • sy 是内核进程消耗的CPU时间百分比。
    • 如果us + sy > 80%说明CPU可能存在不足。
    • id 是处于空闲的CPU百分比
    • wa 是系统等待IO的CPU时间百分比
    • st 是来自于一个虚拟机偷取的CPU时间的百分比

    查看所有CPU核的信息:mpstat -P ALL 【多少秒采样一次】

    查看每个进程使用的CPU的用量信息:pidstat -u 【多少秒采样一次】 -p 【进程号】

    ps -ef|grep java 查看java进程的进程号

     

    内存:free

    查看系统的内存:free -g / free -m / free (-单位)

    • 应用程序可用内存/系统物理内存 > 70 % 内存充足
    • 应用程序可用内存/系统物理内存 < 20 % 内存不足需要增加内存
    • 两者之间,基本够用

    查看进程内存额外信息:pidstat -p 【进程号】 -r 【采样间隔时间】

    硬盘df

    查看磁盘剩余空间数:df / df -h(换算后的结果)

    磁盘IO:iostat

    磁盘性能评估:iostat -xdk 2 3 (2秒采样一次 共采样3次)

    rkB/s 每秒读取数据量kB

    wkB/s 每秒写入数据量kB

    svctm:IO请求的平均服务时间 单位ms

    await:IO请求的平均等待时间 单位ms 值越小性能越好

    util:一秒钟有百分之几的时间用于IO操作,接近100%时,磁盘带宽跑满,需要优化程序或增加磁盘。

    如果读写的数据量长期比较大,一定不正常,需要优化程序的读取。svctm的值和await的值很接近,表示几乎没有IO等待,磁盘性能较好。如果await的值远高于svctm,则表示IO队列等待时间太长,需要优化程序或更换磁盘。

    网络IO:ifstat

    默认本地没有,下载ifstat

     

    如何处理生产环境中CPU占用过高的问题?

    1. 先用top命令找出CPU占比最高的
    2. ps -ef或者jps进一步定位,找到进程编号
    3. 定位到具体的线程或者代码
    4. 将需要的线程ID转换为16进制
    5. jstack 进程ID | grep tid(16进制英文小写的线程ID) -A60

    命令:ps -ef|grep java|grep -v grep找到进程

    命令:ps -mp 进程编号 -o THREAD,tid,time

    参数:

    • -m:显式所有的线程
    • -p:pid进程使用cpu的时间
    • -o:该参数后是用户自定义的想要查询的字段

     找到进程5556中的线程5557,5557的十六进制15b5

    命令:jstack 线程号 | grep tid(16进制线程号) -A60

    -A60 打印出前60行

    定位到Demo1.java程序中有问题的行号是6

  • 相关阅读:
    vba 填写 Workbok 名片
    VBA 插入和删除工作表
    VBA for each 循环语句
    VBA 中的各种循环
    VBA 的 Join 函数
    VBA 计算数组的最大索引和最小索引
    VBA 变量赋值
    VBA 声明变量
    观察样本的变异程度
    python 将数据写入 Excel 表格
  • 原文地址:https://www.cnblogs.com/xdcat/p/13062640.html
Copyright © 2011-2022 走看看