首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

cpu占用过高排查

简介 最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 # 1.使用top 定位到占用CPU高的进程PID...top # 2.通过ps aux | grep PID命令 获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,time | sort -rn # 3.将需要的线程...printf "%x\n" tid # 4.打印线程的堆栈信息 到了这一步具体看堆栈的日志来定位问题了 jstack pid |grep tid -A 30 案例 1.top可以看到PID733进程的占用...2.查找进程733下的线程 可以看到TID 线程775占用了96%且持有了很长时间 其实到这一步基本上能猜测到应该是 肯定是那段代码发生了死循环 ps -mp 733 -o THREAD,tid,time...占用过高

2.4K51
您找到你想要的搜索结果了吗?
是的
没有找到

CPU占用过高排查

一.简介 最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID top...2.通过ps aux | grep PID命令 获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,time | sort -rn 3.将需要的线程ID转换为16...printf "%x\n" tid 4.打印线程的堆栈信息 到了这一步具体看堆栈的日志来定位问题了 jstack pid |grep tid -A 30 二.例子 1.top 可以看出PID 733进程 的占用...CPU 172% 2.查找进程733下的线程 可以看到TID 线程775占用了96%且持有了很长时间 其实到这一步基本上能猜测到应该是 肯定是那段代码发生了死循环 ps -mp 733 -o THREAD

3.7K30

Tomcat占用CPU过高解决方法

问题描述 在工作中经常遇到Tomcat占用CPU居高不下,top显示结果超过200%,请求无法响应,针对这种情况有以下处理办法进行排查。请求无法响应。...命令可以快速查出jvm进程 jps pid 2、查看jstack信息 jstack pid 3、将十进制pid转换为16进制 将十进制转换成16进制 # printf "%x\n" 19713-->将第2步查到占用较高...4、打印线程的堆栈信息 jstack pid | grep tid -A 30 此处不一一列表各tid的堆栈信息了,在其中一个的tid堆栈信息中找到了问题的原因 5、进一步排查,分析每个线程的cpu占用量...通过上述方法,查出tomcat进程对应的线程cpu占用率累积之和约80%,远小于top给出的200%+ 说明并不存在长期占用cpu的线程,应该是属于有许多短暂性的cpu密集计算。...6、问题定位 查询tomcat对应端口的tcp链接,查看是否存在大量EASTABLISH的链接,或还有部分其它状态的连接。

3K10

cpu使用率过高和jvm old占用过高排查过程

今天断断续续的收到管理平台的异常报警,cpu占用过高和jvm old占用过高,这个时候赶紧去排查原因,下面记录了我的排查过程,可能里面还有不正确的地方,欢迎各位大佬指正,也欢迎大家关于类似的案例一起交流...登录服务器找到占用 cpu过高线程堆栈信息 ①通过 top 命令找到占用cpu最高的 pid[进程id] ?...可以发现上面两个方法会创建很多对象且打印堆栈信息占用内存 gc线程 ? 可以发现占用cpu过高的线程进行大量的gc 通过 jstat -gcutil pid 时间间隔 查看 jc 信息 ?...查看占用cpu的进程 pid top -Hp pid 查看进程中占用cpu过高的线程id tid printf '%x/n' tid 转化为十六进制 jstack pid |grep tid的十六进制...-A 30 查看堆栈信息定位 jvm old区占用过高排查思路 top查看占用cpu高的进程 jstat -gcutil pid 时间间隔 查看gc状况 jmap -dump:format=b,file

2.4K20

Tomcat进程占用CPU过高怎么办?

CPU经常会成为系统性能的瓶颈,可能: 内存泄露导致频繁GC,进而引起CPU使用率过高 代码Bug创建了大量的线程,导致CPU频繁上下文切换 通常所说的CPU使用率过高,隐含着一个用来比较高与低的基准值...Java线程: 一些在等待工作 另一些则正在执行任务 最重要的是找到哪些线程在消耗CPU,通过线程栈定位到问题代码 如果没有找到个别线程的CPU使用率特别高,考虑是否线程上下文切换导致了CPU使用率过高...用更精细化的top命令查看这个Java进程中各线程使用CPU的情况: #top -H -p 55790 可见,有个叫“scheduling-1”的线程占用了较多的CPU,达到了42.5%。...但对于该案例:Java进程占用的CPU是961.6%, 而“scheduling-1”线程只占用了42.5%的CPU,那其它CPU被谁占用了?...总结 遇到CPU过高,首先定位哪个进程导致的,之后可以通过top -H -p pid命令定位到具体的线程。

2K10

解决oracle服务占用内存过高的问题

方法一:修改Oracle最大占用内存 通常我们在自己电脑上搭建项目环境时,都免不了要安装Oracle。不管你硬件多强悍,都会发现,Oracle服务一旦启用,内存立马吃紧。...而通常,我们自己的环境并不需要分配那么大的内存来支持Oracle,这种情况下,我们可以通过修改sga值来减少系统中oracle占用内存过大问题。...(2)alter system set sga_max_size=200m scope=spfile; --修改占用内存的大小 ?...修改后重启Oracle服务,再查看资源管理器,Oracle占用资源便会降至200M以下。不过如此修改所付出的代价就是数据库性能的下降,因此修改时不宜调得太小。...方法二:不用时关闭Oracle服务 Oracle启动之后占用了大量内存。所以解决这个问题就是关闭oracle的一些开机启动服务就可以。等你用oracle的时候在手动开启就可以了。

10.6K50
领券