多线程线上问题定位(附带有用的Linux命令)
来源:互联网 发布:linux locale 中文 编辑:程序博客网 时间:2024/06/03 10:27
TOP命令
1,如果某个线程cpu利用率一直100%, 则说明这个线程有可能有死循环.
2,如果某个线程长期除以top位置,说明这个线程可能有性能问题
3,cpu利用率高的线程不停的变化,说明并不是某一个线程导致CPU偏高.
如果是第一种情况,有可能是GC造成的.我们可以用jvm自带的jstat命令查看一下GC情况.是否是持久代或者年老代满了.产生的Full GC,从而导致CPU利用率飙高
命令:sudo /usr/java/jdk1.7.0_80/bin/jstat -gcutil 32235 1000 5 (1000是取样时间间隔单位毫秒,5位次数)
S0 S1 E O P YGC YGCT FGC FGCT GCT 0.39 0.00 12.06 10.09 23.23 54370 306.867 0 0.000 306.867 0.00 0.39 14.03 10.09 23.23 54371 306.872 0 0.000 306.872 0.00 0.39 92.19 10.09 23.23 54371 306.872 0 0.000 306.872 0.00 0.39 92.19 10.09 23.23 54371 306.872 0 0.000 306.872 0.00 0.39 92.20 10.09 23.23 54371 306.872 0 0.000 306.872S0:Heap上的 Survivor space 0 段已使用空间的百分比
S1:Heap上的 Survivor space 1 段已使用空间的百分比
E: Heap上的 Eden space 段已使用空间的百分比
O: Heap上的 Old space 段已使用空间的百分比
P: Perm space 已使用空间的百分比
YGC:从程序启动到采样时发生Young GC的次数
YGCT:Young GC所用的时间(单位秒)
FGC:从程序启动到采样时发生Full GC的次数
FGCT:Full GC所用的时间(单位秒)
GCT:用于垃圾回收的总时间(单位秒)
我们还可以把目标线程dump下来,直接分析哪儿的代码造成的CPU利用率飙升.
命令:sudo -u root /usr/java/jdk1.7.0_80/bin/jstack 32235 > /usr/local/dump17
查看链接到某个端口的连接数
netstat -nat | grep 12200 -c
查看线程数
ps -eLf |grep java -c
查看系统平均负载
cat /proc/loadavg
结果:0.16 0.16 0.14 4/304 28096
前三个数字大家都知道,是1、5、15分钟内的平均进程数。后面两个呢,一个的分子是正在运行的进程数,分母是进程总数;另一个是最近运行的进程ID号
一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于 上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。
- 多线程线上问题定位(附带有用的Linux命令)
- Linux系统线上问题定位
- 快速定位java系统的线上问题
- 线上的项目如何快速定位问题
- 有用的linux命令
- 有用的linux 命令
- linux 有用的命令
- 有用的linux命令
- Linux有用的命令
- 有用的linux 命令
- Linux常用命令(6):线上查询的命令
- java 线上问题定位工具
- 线上CPU 爆表 问题定位
- 如何快速定位线上问题?
- 线上服务运行时间长变慢问题的分析定位
- 10个有用的Linux命令面试问题及答案
- 10个有用的Linux命令面试问题及答案
- 几个有用的linux命令
- ReactiveCocoa 学习资源- RAC中文资源列表
- 生成多位随机数
- 链接脚本文件的写法
- try与finally同时存在的问题
- 二叉树的定义
- 多线程线上问题定位(附带有用的Linux命令)
- yii2安装教程
- PHP入门(2)
- git 使用
- 相对路径和绝对路径的区别
- POJ1631-Bridging signals-最长上升子序列
- 如何设计响应式网页中的图片和图库(转)
- 算法学习之最大流/最小割算法详解(Yuri Boykov and Vladimir Kolmogorov,2004 )
- Lambda表达式和函数式接口