java sar包_linux下查看最占性能的JAVA进程
记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了找到最耗CPU的线程
ps命令
命令:ps -mp pid -o
THREAD,tid,time或者ps -Lfp pid
结果展示:
这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息。比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列。
比如这里找到了一个TID : 30834,所占用的TIME时间最高。
通过printf "%x\n" 30834首先转化成16进制,继续通过jstack命令dump出当前的jvm进程的堆栈信息。通过Grep命令即可以查到对应16进制的线程id信息,很快就可以找到对应最耗CPU的代码快在哪。
简单的解释下,jstack下这一串线程信息内容:
800 nid=0x7d9b waiting on condition
[0x0000000046f66000]
"DboServiceProcessor-4-thread-295"
daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on
condition [0x0000000046f66000]
nid:对应的linux下的tid,就是前面转化的16进制数字
tid:这个应该是jvm的jmm内存规范中的唯一地址定位,如果你详细分析jvm的一些内存数据时用得上,我自己还没到那种程度,所以先放下
top命令
命令:
top -Hp pid
结果显示:
和前面的效果一下,你可以实时的跟踪并获取指定进程中最耗cpu的线程。再用前面的方法提取到对应的线程堆栈信息。
判断I/O瓶颈
mpstat命令
命令:mpstat -P ALL 1 1000
结果显示:
注意一下这里面的%iowait列,CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。
通过这个参数可以比较直观的看出当前的I/O操作是否存在瓶颈
iostat命令
命令:iostat -m -x 1 1000
显示结果:
同样你可以观察对应的CPU中的%iowait数据,除此之外iostat还提供了一些更详细的I/O状态数据,比如比较重要的有:
avgqu-sz : The average queue length
of the requests that were issued to the device.
(磁盘队列的请求长度,正常的话2,3比较好。可以和cpu的load一样的理解)
await : The average time (in
milliseconds) for I/O requests issued to the device to be served.
(代表一个I/O操作从wait到完成的总时间)
svctm和%util都是代表处理该I/O请求花费的时间和CPU的时间比例。判断是否瓶颈时,这两个参数不是主要的
r/s w/s和rMB/s wMB/s都是代表当前系统处理的I/O的一些状态,前者是我们常说的tps,后者就是吞吐量。这也是评价一个系统的性能指标
pid命令
命令:pidstat -p pid -u -d -t -w -h 1
1000
显示命令:
相当实用的一个命令,可以基于当个进程分析对应的性能数据,包括CPU,I/O,IR,CS等,可以方便开发者更加精细化的观察系统的运行状态。不过pidstat貌似是在2.6内核的一些较新的版本才有,需要安装sysstat包。
ubuntu下,可以通过sudo apt-get install
sysstat进行安装。
sar命令
命令:sar -x pid 1 1000
显示命令:
sar也可以指定对应的pid,关注固定的几个参数,没有pidstat那么强大。看不到对应的I/O,IR等信息。
sar的功能可以覆盖mpstat,iostat的相关功能。
dstat命令
命令:dstat -y --tcp 1 1000
显示命令:
通过dstat --tcp可以比较方便的看到当前的tcp的各种状态,不需要每次netstat -nat去看
其他命令
netstat -natp:查看对应的网络链接,关注下Recv-Q,Send-Q,State。
lsof -p pid:查找对应pid的文件句柄
lsof -i:80:查找对应端口被哪个进程占用
lsof /tmp/1.txt:查找对应文件被哪个进程占用
tcpdump / wireshark
java sar包_linux下查看最占性能的JAVA进程相关推荐
- linux java bin 安装_linux下安装后缀为bin的Java JDK
您可能感兴趣的话题: java 核心提示:linux下安装后缀为bin的Java JDK方法. 1.sun网站上下载jdk-6u13-linux-i586.bin: 2.一般默认下载到文档: 3.比如 ...
- linux打印JAVA日志命令_Linux下查看日志用到的常用命令
tail -n 10 test.log 查询日志尾部最后10行的日志; tail -n +10 test.log 查询10行之后的所有日志; head: 跟tail是相反的,tail是 ...
- linux java tar 卸载_linux下jdk的卸载与安装
JDK的卸载 1.检查jdk的是否安装,显示如下表示安装: [root@localhost ~]# rpm -aq|grep java tzdata-java-2010l-1.el6.noarch j ...
- ubunt查看网卡流量_Linux下查看网卡流量
在Linux下怎么看网络流量? 在Windows下,我们可以很方便的通过360来查看网络流量,知道哪个进程占用的网络带宽比较多.那在Linux下怎么看流量呢,对于Web服务器来说这是很重要的. 下面这 ...
- python安装gdal包_linux下gdal的python包的安装
由于python包是从C++包编译出来的,所以需要先下载源码进行编译安装. 1. gdal下载 http://download.osgeo.org/gdal/CURRENT/ sudo ./confi ...
- centos查看磁盘转速_linux下查看硬盘的转速
关于linux下查看硬盘的转速也并没有一个统一的非常好用的工具 ,很多方法都是查看到disk 的型号再去网上查找转速或者利用OEM厂商提供的阵列查看工具去获取.我在网上查找了很久后,找到了一款对SCS ...
- linux怎么查看mysql安装在哪里_Linux下查看MySQL的安装路径
Linux下查看mysql.apache是否安装,并卸载. 指令ps -ef|grep mysql得出结果 root 17659 1 0 2011 ? 00:00:00 /bin/sh /usr/bi ...
- debian 文件夹中文件大小_Linux下查看文件和文件夹大小 删除日志
场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...
- linux 实时 网口 速率_linux 下查看网卡工作速率-阿里云开发者社区
[root@hadoop058 ~]# mii-tool eth0: negotiated 100baseTx-FD, link ok 100M linux 下查看网卡工作速率 Ethtool是用于查 ...
最新文章
- 003_Spring Data JPA分页和排序查询
- BootStrap Table使用
- windows右键没有显示“文本文档”的解决办法(建议用方法二)
- java读取excel数据_Java读取Excel内容(转)
- .NET 5 和 C#9 /F#5 一起到来, 向实现 .NET 统一迈出了一大步
- linux网络编程之用一张图片说明套接口常用函数
- 语音合成论文和英伟达撞车,韩国小哥紧急放出全部草稿代码和样本 | 资源帖...
- MVC学习五:Razor布局页面 _ViewStart.cshtml
- 3.新建页面以及添加路由 2021-07-11
- php开发自学经典.pdf_PHP从入门到精通(第4版) 明日科技 中文完整pdf扫描版[42MB]
- 使用Python对GIF读取、生成、压缩和加水印
- 软件漏洞之Zabbix
- Tms320F28335中软件触发信号采样(ADC)
- Select函数的作用和使用
- 浅谈AS2 传输/连接
- 单源最短路径的迪克斯特拉(Dijkstra)算法
- 计算机硬件信息被修改怎么还原,修改bios硬件信息方法
- 计算机山西省技能大赛,大同市二职中计算机组参加省技能大赛回顾
- 手游代理加盟最准解释来了
- 微服务入门篇(二),万字长文带你实操作SpringCloudAlibaba微服务组件
热门文章
- 【老杜】MySQL—day01
- js更新数组对象_7 种Vue 数据已更新而页面没有更新的情况及深化总结(收藏)
- python实例化对象做实参_如何在Python中记住类实例化?
- 一行Python代码制作动态二维码
- Django查询 – id vs pk
- 计算机最佳参数,对使用者来说,学会计算机性能参数提取,给出性能评价很重要...
- 用计算机计算出密码,自带计算器的密码
- 小程序循环里做字符串拼接_昨天还在for循环里写加号拼接字符串的那个同事,今天已经不在了...
- Kconfig文件详解
- 关于SQL数据库中cross join 和inner join用法上的区别?