zoukankan      html  css  js  c++  java
  • Linux下CPU占用率高分析方法

    一、可能有线程一直占用CPU资源

    1. 先通过 ps 查看进程状态,找出进程的PID(8209)。

    2.jstack -l 8209 > /usr/local/work/tomcat/8209.stack 导出PID对应的线程信息到文件

    3.对导出的线程文件下载本地做分析(可以文本打开)

    4. 通过top -H -p 8209 命令查看对应进程是哪个线程占用CPU过高(eg:8308)

    5.printf "%x " 8308 转换十进制为十六进制 此处为:2074。

    6.在导出的堆栈文件中搜索线程ID等于nid=0x2074的线程,此处即列出了该线程对应的类

    7.根据线程信息找到对应的类定位问题成功,可能的原因:

                         1.程序计算比较密集(大型矩阵的运算)

                         2.程序出现了死循环(while循环,hashmap死循环)

                         3. 程序逻辑结构的问题(数据库连接没有释放,连接池死锁,自旋锁一直占用着内存)

    二、查看磁盘使用率是不是超出正常范围。(df)

    三、查看内存使用率是否超出正常范围(free)

    四、jvm内存状态可能出现异常,可能频繁的GC原因。可以适当的改变堆栈比例。

    CPU利用率:1 - CPU空闲运行时间/总运行时间

    CPU负载(load):是指在一段时间内占用cpu时间的进程和等待cpu时间的进程数(处于被唤醒状态,不是wait状态),取决于CPU队列。

    如果现在出现CPU利用率很低,load很高的情况,可能是IO密集型的任务比较多。

    原文地址:https://blog.csdn.net/qiuchaoxi/article/details/81296713
  • 相关阅读:
    【.NET】网络编程总结
    【C#】修饰符
    【C#】HTTP请求GET,POST
    【C#】事件总结
    【.NET】使用HtmlAgilityPack抓取网页数据
    JAVA开发者最常去的25个英文网站
    java 注解:SuppressWarnings、Deprecated、Override
    android apk如何入门
    网盘推荐
    反射
  • 原文地址:https://www.cnblogs.com/jpfss/p/11416512.html
Copyright © 2011-2022 走看看