抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面
时间:2022-05-05
本文章向大家介绍抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
写在前面:当一个台 WEB 主机(JAVA 平台)上有多个站点时,很可能因为一个站点项目出现死锁之类的 BUG 而导致所有站点挂掉!最烦的就是因为站点过多,在日志无法具体指向的时候,你根本无法确定那个站点出现 BUG,从而你也没法推给开发人员解决。 下面,就介绍一个抓取高占用 CPU 的线程的简单方法:
- 运行 top 命令取得 JAVA 线程号(PID),假如是 2068;
- 运行 jstack + pid 命令导出 JAVA 线程信息到 result 文件,命令行为
- jstack 2068>result
- 运行 top -p 2068 -H 查看 CPU 占用排名情况,并记录 PID;
- 运行 ./jtgrep +PID 找到线程头文字(PID 为第 3 步获取) ;
- 使用 vi/vim 打开 result,查询头文字就能找到相应线程。
下面为 jtgrep 代码:
#bin/bash
nid =`python -c "print hex($1)"` grep -i $nid $2
写在后面:此方法无须安装任何软件,能够快速找出占用 CPU 的 JAVA 线程,是发现同类问题的首选办法,但很多时候你可能找到的是 VM threads 线程或者 GC 线程。。。无法真正找到毒瘤,那就只能另寻他法了。
- Codeforces 714A Meeting of Old Friends
- Code forces 719A Vitya in the Countryside
- Hadoop数据分析平台实战——190Highcharts介绍离线数据分析平台实战——190Highcharts介绍
- HUST 1555 A Math Homework
- HUST 1541 Student’s question
- HDU 3785 寻找大富翁
- Hadoop数据分析平台实战——250JSSDK数据收集引擎编写离线数据分析平台实战——250JSSDK数据收集引擎编写
- HDU 2564 词组缩写
- 约瑟夫问题方法总结
- 欧里几德及扩展欧里几德算法
- Hadoop数据分析平台实战——260用户数据ETL离线数据分析平台实战——260用户数据ETL
- # Hadoop离线数据分析平台实战——230项目数据存储结构设计Hadoop离线数据分析平台实战——230项目数据存储结构设计
- ECJTUACM16 Winter vacation training #5 题解&源码
- Codeforces 716A Crazy Computer
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释