• 006-top查看计算机信息,java一次线上CPU 100%的排查


    1、使用top命令基本信息

    us:用户态使用的cpu时间比
    sy:系统态使用的cpu时间比
    ni:用做nice加权的进程分配的用户态cpu时间比
    id:空闲的cpu时间比
    wa:cpu等待磁盘写入完成时间
    hi:硬中断消耗时间
    si:软中断消耗时间
    st:虚拟机偷取时间

    2、进入命令后可以使用的命令

    通过?或者h查看

      Z,B       Global: 'Z' change color mappings【设置颜色】; 'B' disable/enable bold【字体加粗】
      l,t,m     Toggle Summaries: 'l' load avg【负载】; 't' task/cpu stats【task/cpu汇总】; 'm' mem info【内存】
      1,I       Toggle SMP view: '1' single/separate states【负载】; 'I' Irix/Solaris mode
    
      f,o     . Fields/Columns: 'f' add or remove【展示字段增删】; 'o' change display order【展示字段顺序】
      F or O  . Select sort field【选择排序字段】
      <,>     . Move sort field: '<' next col left; '>' next col right【翻页】
      R,H     . Toggle: 'R' normal/reverse sort【正常、反序】; 'H' show threads【展示线程】
      c,i,S   . Toggle: 'c' cmd name/line【命令名/整行】; 'i' idle tasks【空闲任务】; 'S' cumulative time【耗时】
      x,y     . Toggle highlights: 'x' sort field【排序字段高亮】; 'y' running tasks【运行任务】
      z,b     . Toggle: 'z' color/mono;【颜色】 'b' bold/reverse 【加粗】(only if 'x' or 'y')
      u       . Show specific user only【用户】
      n or #  . Set maximum tasks displayed【设置最大展示任务】
    
      k,r       Manipulate tasks: 'k' kill【杀 进程】; 'r' renice【重指定】
      d or s    Set update interval【设置更新间隔】
      W         Write configuration file【写配置文件】
      q         Quit【退出】
              ( commands shown with '.' require a visible task display window ) 
    Press 'h' or '?' for help with Windows,

    3、一次CPU 100%处理-java进程

    步骤一、找到最耗CPU的进程,打开终端  

      执行top -c ,显示进程运行信息列表

    top -c

      键入P (大写p),进程按照CPU使用率排序

    步骤二:找到最耗CPU的线程

      显示一个进程的线程运行信息列表

    top -Hp 线程id
    如:top -Hp 4830

      键入P (大写p),线程按照CPU使用率排序

    步骤三:将线程PID转化为16进制

      查看步骤二中,进程内线程具体线程id,如:4831

    printf “%x” 4831

      之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。如上述 4831 对应的是 12df

    步骤四:查看堆栈,找到线程在干嘛

      工具:pstack/jstack/grep  

    jstack 进程id | grep '16进制线程id' -C5 --color

    如:

    jstack 4830 | grep '0x12df' -C5 --color
    • 打印进程堆栈

    • 通过线程id,过滤得到线程堆栈

    找到了耗CPU高的线程对应的线程名称“AsyncLogger-1”,以及看到了该线程正在执行代码的堆栈。进一步分析即可

    查看进程端口信息
      netstat -nap |grep 30778
    查看进程信息
      ps -ef |grep 30778
    杀死进程
      kill -9 30778
    检查一下系统最近系统登录信息,看看是否被入侵,使用
      lastlog
    列出当前和曾经登入系统的用户信息
      last

  • 相关阅读:
    [经验] 如何在虚拟机上安装 CentOS
    [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信[2]
    [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信 [1]
    [经验] 关于 Java 中的非空判断
    [经验] Java Web 项目怎么部署到 Linux 系统上
    求和
    引用与指针
    C++学习前言
    大O
    ubuntu连接不上mysql问题
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10868323.html
Copyright © 2020-2023  润新知