jvm调优常用命令

一、ps+top+jstack,查看cpu过高的线程信息
1、lsof -i:8401  通过启动的端口号查找进程ID    
2、top -Hp pid 获取线程耗费cpu或时间最高的线程号
3、printf "%x\n" 21742    将线程号21742转化16进制
4、jstack pid | grep 54ee 



二、ps+top+jmap+jhat,查看线程堆内存使用信息
1、ps aux|grep mypro  通过ps命令查找进程ID
2、top -Hp pid 获取线程
3、jmap -dump:format=b,file=/tmp/dump.dat 21711 对21711的进程进行Dump
4、jhat -port 9998 /tmp/dump.dat jhat使用9998端口查看命令
5、10.10.32.158:9998 在浏览器中输入主机地址:9998查看
6、在页面上搜索WebappClassLoader,找到他的上级引用,一层一层点进去往上找,直到找到相关联的类信息

 

三、jmap
jmap:查看类加载器与持久代信息,还可查看堆内存信息,执行dump命令将信息导入文件中
jmap -heap 21711 查看进程堆内存使用情况---观察各个分区情况
jmap -histo:live 21711 | more 查看进程堆内存详细使用情况
jmap -dump:format=b,file=/tmp/dump.dat 21711 对21711的进程进行Dump
还有其它工具TProfiler

 

四、jstack
jstack  21711      查看进程下所有线程栈信息,检查是否死锁

 

五、vmstat 180 20 3分钟(180秒)统计一次系统资源情况,一共统计20次
in    每秒CPU的中断次数,包括时间中断
cs    每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值