linux java 线上问题排查

1 篇文章 0 订阅
1 篇文章 0 订阅

转自: 

http://www.myexception.cn/operating-system/415201.html

 

线上故障问题排查技能记载一

1. pgrep 查询进程的工具 
pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了
用法: pgrep 参数选项 程序名

eg: pgrep java #查询出JAVA进程的进程号
常用参数:
-l 列出程序名和进程ID
-o 进程起始的ID
-n 进程终止的ID

2. 汇总某个进程下所有的线程数

方法一 :ls /proc/20967/task/|wc -l : 20967是进程号

方法二 : ps -eLf | grep 20967 |wc -l

ps:该方法对于排查JAVA各种容器(eg:tomcat)由于创建过多线程,导致cpu耗费大量的资源进行上线文切换非常有帮助。

我们可以写一个脚本,当线程数>阀值,则进行jstack dunp

3. TOP命令看线程资源使用情况

第一步:输入TOP命令

第二步: 输入 shift+h ,打开线程模式,查看目前最耗系统资源的线程是哪些

可以再按 1用CPU模式看各个CPU资源的使用情况 按O查看帮助



4 top+jstack 
使用top命令看线程资源使用情况后,可以得到这些线程的pid,然后把这些线程号转换成16进制,
jstack -l pid(java进程号) :把java线程快照给dump下来.可以用来排查死锁,以及耗费系统资源线程当前的运行情况

eg: jstack -l pid >jstack_dump.log #将当前JVM线程快照dump到jstack_dump.log文件中

grep jstack_dump.log 16进制号 #这样可以看看当前这些耗费资源的线程的内存情况

 

5. jstack 打印当前线程堆栈情况 
命令格式: jstack [-option] jvm_pid
参数: -l 打印关于锁的堆栈信息(long listing. Prints additional information about locks)
-m 混合打印模式,可打印C++和JAVA的堆栈信息
-h 打印帮助信息

 

 

6.查看运行时gc情况命令: 
$JAVA_HOME/bin/jstat -gcutil `pgrep java` 1000 10 (后三个参数是PID,扫描间隔时间单位毫秒,扫描次数)

$JAVA_HOME/bin/jstat -gc `pgrep java` 1000 10

 

 

7.对于网络问题的定位 :
可以通过netstat命令来查看某个时间段的网络重传率。
通过netstat -l enX -sp tcp
收集发送的TCP包数和retransmit的包数,间隔一定时间过后
再次收集这两个数值,分别相减后相除,可得出在此采样时间内的TCP重传率

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值