java服务器cpu100_服务器cpu占用100%,如何排查(java进程&sql)

服务端cpu占用100%,如何排查?本文从java进程和sql给出排查思路。

A.java进程---大致流程是找出进程的pid-找到进程下占用资源最大的线程-用jstack打印出进程快照

linux:

1.top -c找到占用cpu较高的进程,获取到[pid]

2.top -Hp [pid],查看该进程对应的线程,找到线程中占用cpu较高的线程id(tid)

3.jstack -l [pid] > /path/[pid].stack,打印出进程此时的快照

4.vi [pid].stack或者cat [pid].stack|grep '[tid]的16进制' -C 8,查看该线程在cpu占用100%时做了什么

使用截图:

25dd4cbf40022deb4e3215fb1a3fbbbb.png

windows:

1.在任务管理中找到占用cpu较高的进程,获取[pid]

2.使用Process Explorer获取该[pid]对应的线程,找到占用资源较高的线程id(tid)

3.cmd窗口中输入jstack -l [pid] > /path/[pid].txt

4.打开文件[pid].txt,查找[tid]的16进制所在的行,查看具体信息

B.sql进程---例如在top -c中看到某个select占cpu100%...大致流程是找出当前具体是哪条sql在跑,再结合代码与业务分析

在pgsql或navicat等sql工具的客户端找到“服务器状态”,然后可以看到服务端此时的sql动态,再将sql具体语句找到,进行分析:

a94db4d6ad461508d19b785ab28ec2f3.png

c78a1a36b5f73dddef26c5bfd7790054.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值