Linux环境通过java虚拟机定位程序问题位置的方法
1. # ps -ef | grep tomcat
结果类似如下格式:
[@sjs_113_75 vmstudy]# ps -ef | grep tomcat
root 62776 1 99 11:34 pts/17 07:49:56 /usr/bin/java -Djava.util.logging.config.file=/search/odin/xx/tomcat7/conf/logging.properties -Djava.util.logging
找到出问题的进程pid, 如上为62776,
2. # pidstat -p 62776 1 100 -u -t (-p指定进行pid,-u表示对CPU使用率的监控, -t参数将系统性能的监控细化到线程级别)
输出结果如下:
14时24分42秒 TGID TID %usr %system %guest %CPU CPU Command
14时24分43秒 81988 - 916.00 27.00 0.00 943.00 21 java
14时24分43秒 - 81988 0.00 0.00 0.00 0.00 21 |__java
14时24分43秒 - 81997 0.00 0.00 0.00 0.00 2 |__java
14时24分43秒 - 81998 4.00 1.00 0.00 5.00 17 |__java
14时24分43秒 - 81999 4.00 0.00 0.00 4.00 4 |__java
14时24分43秒 - 82000 4.00 0.00 0.00 4.00 2 |__java
14时24分43秒 - 82001 4.00 0.00 0.00 4.00 1 |__java
14时24分43秒 - 82002 5.00 0.00 0.00 5.00 11 |__java
14时24分43秒 - 82003 5.00 0.00 0.00 5.00 23 |__java
14时24分43秒 - 82004 5.00 0.00 0.00 5.00 18 |__java
14时24分43秒 - 82005 3.00 0.00 0.00 3.00 5 |__java
14时24分43秒 - 82006 4.00 0.00 0.00 4.00 27 |__java
14时24分43秒 - 82007 5.00 0.00 0.00 5.00 26 |__java
14时24分43秒 - 82008 4.00 0.00 0.00 4.00 3 |__java
14时24分43秒 - 82009 4.00 1.00 0.00 5.00 13 |__java
14时24分43秒 - 82010 4.00 1.00 0.00 5.00 9 |__java
14时24分43秒 - 82011 4.00 0.00 0.00 4.00 12 |__java
14时24分43秒 - 82012 4.00 1.00 0.00 5.00 7 |__java
14时24分43秒 - 82013 4.00 0.00 0.00 4.00 30 |__java
14时24分43秒 - 82014 4.00 0.00 0.00 4.00 19 |__java
14时24分43秒 - 82015 4.00 0.00 0.00 4.00 21 |__java
14时24分43秒 - 82016 4.00 0.00 0.00 4.00 0 |__java
14时24分43秒 - 82017 5.00 1.00 0.00 6.00 6 |__java
14时24分43秒 - 82018 4.00 0.00 0.00 4.00 8 |__java
14时24分43秒 - 82019 4.00 0.00 0.00 4.00 15 |__java
14时24分43秒 - 82020 4.00 0.00 0.00 4.00 29 |__java
14时24分43秒 - 82021 5.00 0.00 0.00 5.00 5 |__java
14时24分43秒 - 82022 1.00 0.00 0.00 1.00 12 |__java
14时24分43秒 - 82023 0.00 0.00 0.00 0.00 7 |__java
14时24分43秒 - 82024 0.00 0.00 0.00 0.00 18 |__java
14时24分43秒 - 82025 0.00 0.00 0.00 0.00 18 |__java
14时24分43秒 - 82026 0.00 0.00 0.00 0.00 0 |__java
14时24分43秒 - 82027 0.00 0.00 0.00 0.00 26 |__java
14时24分43秒 - 82028 0.00 0.00 0.00 0.00 9 |__java
14时24分43秒 - 82029 0.00 0.00 0.00 0.00 18 |__java
14时24分43秒 - 82030 0.00 0.00 0.00 0.00 11 |__java
14时24分43秒 - 82031 0.00 0.00 0.00 0.00 18 |__java
14时24分43秒 - 82062 0.00 0.00 0.00 0.00 18 |__java
14时24分43秒 - 82083 0.00 0.00 0.00 0.00 7 |__java
14时24分43秒 - 82084 0.00 0.00 0.00 0.00 6 |__java
14时24分43秒 - 82085 0.00 0.00 0.00 0.00 16 |__java
14时24分43秒 - 82103 0.00 0.00 0.00 0.00 6 |__java
<strong>14时24分43秒 - 82104 84.00 2.00 0.00 86.00 24 |__java
14时24分43秒 - 82105 75.00 2.00 0.00 77.00 20 |__java
14时24分43秒 - 82106 82.00 2.00 0.00 84.00 10 |__java
14时24分43秒 - 82107 84.00 1.00 0.00 85.00 5 |__java
14时24分43秒 - 82108 77.00 3.00 0.00 80.00 2 |__java
14时24分43秒 - 82109 80.00 3.00 0.00 83.00 16 |__java
14时24分43秒 - 82110 83.00 3.00 0.00 86.00 3 |__java
14时24分43秒 - 82111 84.00 4.00 0.00 88.00 9 |__java
14时24分43秒 - 82112 82.00 2.00 0.00 84.00 1 |__java
14时24分43秒 - 82113 84.00 3.00 0.00 87.00 25 |__java</strong>
如上,可以看出,该进程下线程很多,其中黑体部分,%usr,%CPU的占有率很高,说明这些线程占了大部分CPU的时间,当然这是我的代码,因为是开启了多个线程来跑同一个需求,所以每个线程占用的CPU时间差不多相同,可以看出是如上黑体部分的线程占用了大部分CPU时间
3. 使用命令导出指定Java进行的所有线程到文件中
# jstack -l 62776 > /temp/t.txt
该文件中会出现类似如下内容
"Thread-0" prio=10 tid=0xb75b300 nid=0x4b4 runnable [0x8f171000]java.lang.Thread.State: runnableat javatunning.ch6.toolscheck.HoldCPUMain$<strong>HoldCPUTask</strong>.run(HoldCPUMain.java:7)
........................
这样就可以定位出出问题的类了
Linux环境通过java虚拟机定位程序问题位置的方法相关推荐
- qt无法定位程序输入点解决方法
qt无法定位程序输入点解决方法 更新日期:2020-05-12 14:53:22 来源:互联网 手机扫码继续观看 很多的小伙伴在使用电脑的时候肯定都遇到过QT无法定位程序输入点与动态链接库,给正常的使 ...
- 在 Linux 上找出并解决程序错误的主要方法【转】
在 Linux 上找出并解决程序错误的主要方法[转] 参考文章: (1)在 Linux 上找出并解决程序错误的主要方法[转] (2)https://www.cnblogs.com/sky-heaven ...
- 转Linux环境下段错误的产生原因及调试方法小结
Linux环境下段错误的产生原因及调试方法小结 转载于:https://www.cnblogs.com/objectDetect/p/7575659.html
- linux升级网卡fw,一种linux环境下覆盖多品牌硬盘的FW升级方法与流程
本发明属于服务器硬盘升级技术领域,具体涉及一种linux环境下覆盖多品牌硬盘的FW升级方法. 背景技术: 随着浪潮服务器的不断发展和壮大,作为国内最大的服务器供应商,服务器市场已经囊括各个领域,客户对 ...
- windows下安装cygwin以及SeismicUnix在cygwin下的安装(windows下安装linux环境,非虚拟机、非双系统)
一直想在我的笔记本上装个linux,之前装过win10和Ubuntu双系统,后来觉得卡,就重装了一个单Ubuntu系统,在重复的装软件,各种软件(办公.学习.编程),就连微软的office都已经让我安 ...
- Linux环境下多线程C/C++程序的内存问题诊断
目录 说明 常见的内存错误举例 常见的内存访问错误有以下几种: 内存问题定位步骤 野指针 内存释放后使用(UaF,Use after Free) 内存问题检查工具 常见的内存问题检查工具 Valgri ...
- mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)
对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...
- win、linux环境下JAVA+GDAL部署,jar包启动,相关描述,问题解决
文章目录 windows环境下JAVA+GDAL 1.GDAL下载 2.GDAL安装(既解压后拷贝) 3.GDAL测试 4.Jar包方式运行 https://www.jianshu.com/p/6bc ...
- java虚拟机编译顺序_深入理解Java虚拟机(程序编译与代码优化)
文章首发于微信公众号:BaronTalk,欢迎关注! 对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就 ...
最新文章
- iOS LaunchScreen和LaunchImage的转换启动图
- Qtopia-2.2.0 的配置和交叉编译
- 图片序列化和反序列化成图片文件(代码)
- PANEL中显示窗体
- Centos7.x 安装 CDH 6.x
- JAVA 测试日期的不同显示格式
- CentOS 7安装mysql
- Android 7.1 竖屏转横屏全过程实现-基于高通平台
- JAVA实现的小程序
- 只需8招,搞定Pandas数据筛选与查询
- 怎么设置ppt页面的长度和宽度_ppt页面尺寸_ppt尺寸大小的设置方法步骤详解
- 如何将EXCEL中的多个单元格内容合并在一个单元格内
- java 实心圆,liststyletype实心圆小图标大小颜色属性设置
- python基础学习的书籍
- 年前更新 阿里云冬季实战营第二期:Linux操作系统实战入
- python 面试题
- 11、OpenGL - 混合(颜色混合)
- eclipse列名无效_【转】sql使用In语句查询出所有,但子查询列名无效
- 机器视觉4——光的偏振
- 【附源码】计算机毕业设计SSM实验室安全准入考试系统
热门文章
- centos7使用中文输入法
- 软工作业4:词频统计
- layer.alert自定义关闭回调事件
- 题目1022:游船出租(结构体使用)
- Codeforces Beta Round #10 D. LCIS 动态规划
- OXite 微软一款基于asp.net mvc架构的blog内容管理系统
- error LNK2019 unresolved external symbol __imp__IoDeleteDevice 错误
- 【Java】程序调试
- 03-23 卡顿分析
- csv phoenix 导入_phoenix学习