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

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

CPU经常会成为系统性能的瓶颈,可能: 内存泄露导致频繁GC,进而引起CPU使用率过高 代码Bug创建了大量的线程,导致CPU频繁上下文切换 通常所说的CPU使用率过高,隐含着一个用来比较高与低的基准值...如果没有找到个别线程的CPU使用率特别高,考虑是否线程上下文切换导致了CPU使用率过高。...使用top命令,我们看到Java进程CPU使用率达到了961.6%,注意到进程ID是55790。...但对于该案例:Java进程占用的CPU是961.6%, 而“scheduling-1”线程只占用了42.5%的CPU,那其它CPU被谁占用了?...总结 遇到CPU过高,首先定位哪个进程导致的,之后可以通过top -H -p pid命令定位到具体的线程。

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JVM调优之Java进程消耗CPU过高

    JVM调优之Java进程消耗CPU过高 查找问题思路 1.查看cpu使用率,发现有线程cpu占用率很高 tops 咱们拿18092线程举例示范 2.查询pid对应的进程 ps -ef|grep 18092...|grep -v grep 3.查找对应进程中的线程使用cpu的情况 top -Hp 18092 发现18097线程占用CPU时间最长 4.根据线程号查看是哪个线程频繁占用CPU 将线程号转化为十六进制的形式...5.查看进程对应的JVM内存使用情况 jstat -gc 18092 3000 利用上面的命令输出18092进程对应的GC情况,每隔3S采样一次 黄颜色为堆区中Young区GC次数,可观测到一直为68...6.查看进程对应的JVM的配置情况 jmap -heap 18092 看下边的图 新生代是使用率正常 总使用率只有41% 而黄颜色的老生代!!...更改进程启动参数,将此区域空间调大后问题得到解决。

    62510

    Mysql占用过高CPU时的优化手段

    Mysql占用CPU过高的时候,该从哪些方面下手进行优化?...占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引...; 2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是GroupBy、OrderBy排序问题所导致,然后慢慢进行优化改进。...常见问题: 一般是睡眠连接过多,严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃。...wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题

    4.7K120

    MySQL占用CPU过高 查找原因及解决 多种方式

    db列:显示这个进程目前连接的是哪个数据库。 command列:显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。  ...; 三、mysql中的wait_timeout坑 mysql> show variables like '%timeout%';  首先解释一下: wait_timeout — 指的是mysql在关闭一个非交互的连接之前所要等待的秒数...interactive_time — 指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接),其取值范围随wait_timeout变动,默认值28800...MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,一到高峰期肯定会造成,会有太多的TCP连接没关闭,数据库连接数肯定是不够。从而会产生CPU占用过高,服务器告警等问题。...然后查看 show variables like ‘wait_timeout’; 2、第二种修改方式 不需重启MySQL   mysql> show variables like '%timeout'

    6.6K00

    MySQL 故障诊断:MySQL 占用 CPU 过高问题定位及优化

    ◆ CPU 占用过高常见现象 在使用 MySQL 的过程中会遇到各种瓶颈问题,常见的是 IO 瓶颈,但是有时候会出现服务器 CPU 使用率超过 100%,应用页面访问慢,登录服务器负载很高。...而导致这个问题竟然是 MySQL 进程,按理说如果 MySQL 运行稳定,服务器的 CPU 资源并不会跑满,如果出现这个问题,初步可以断定,是 MySQL 实例中出现了问题 SQL。...◆ 检查服务器线程 方法一: top -H -p 先通过 top 找出占用 CPU 使用率 100% 的 MySQL 进程 32232,在具体查看该进程下的线程情况。...方法二: pidstat -t -p 1 5 先通过 top 找出占用 CPU 使用率 100% 的 MySQL 进程 32232,使用 pidstat 工具在具体查看该进程下的线程情况...◆ 优化一下也不难 前面介绍了几种常用的排查 MySQL 占用 CPU 过高问题排查的方法,那么当我们遇到问题了,如何解决,如何优化呢?

    13.9K34

    CPU占用过高定位?

    比如问你常用的5个linux命令你可以说top(整机),vmstat(CPU),free(内存),df(硬盘),iostat (磁盘IO),ifstat(网咯IO)等... ?...token=07193d87b188531f 下面来做个实战的测试,当xian线上遇到CPU占用过高怎么排查,如果是在面试的时候面试官这么问你的话,你回答查看下日志或者根据出错问题查看下百度,那么在面试官那你的印象将不会得到很好的认可...可以很清晰的看出有个test程序 使用ps -mp 进程 -o THREAD,tid,time 定位到具体的线程或代码 ?...进程ID(新方法)(注意是进程) 会打印出一大串信息我们翻到最底下就可以找到如下报错 ?...当然一般的代码程序出错我们可以直接用 ps -ef|grep 启动程序名,但是对于CPU占用过高的排查还是需要一定的手段和实战经验的。 每天 进步一点点

    2.4K40

    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

    3.9K30

    cpu占用过高排查

    简介 最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 # 1.使用top 定位到占用CPU高的进程PID...进制格式 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...显然是 SmsQueueServiceImpl 中的produceMissSms 和 consumeMissSms 方法有问题 最后注释掉那段循环代码,cpu占用就正常了,也有可能是因为频繁GC导致CPU...占用过高

    2.4K51

    故障分析 | 大量短时进程导致 cpu 负载过高案例一则

    作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。...2、诊断 执行top命令,cpu的usr已经达到了40%,但是前几个进程的%cpu加起来远远凑不够数。 [renkun0524-1.png] 查看mongos的qps,确实没有执行用户命令了。...回到本文开头,top进程cpu利用率加起来远远小于cpu总体负载,大概率是有频繁短时进程偷走了这部分CPU资源,导致top命令来不及捕获统计。...[renkun0524-6.png] 将zabixx进程关闭,cpu马上恢复正常,找到了元凶。 我们其他环境也采用了zabbix监控,但是都没有遇到类似问题。...3、小结 当机器cpu负载持续高涨却抓取不到top进程时,可以采用execsnoop抓取短时进程,类似工具还有iosnoop、opensnoop。

    78640

    CPU 占用过高问题排查

    方法一 第一步:使用 top命令,然后按shift+p按照CPU排序 找到占用CPU过高进程的pid 第二步:使用 top -H -p [进程id] 找到进程中消耗资源最高的线程的id 第三步:...id] |grep -A 10 [线程id的16进制]” 查看线程状态信息 方法二 第一步:使用 top命令,然后按shift+p按照CPU排序 找到占用CPU过高进程 第二步:使用 ps -mp...CPU占用故障排查 解决过程 1、根据top命令,发现PID为2633的Java进程占用CPU高。...2、找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序: [root@localhost ~]# ps -mp 2633 -o THREAD,tid,time | sort...找到了耗时最高的线程(TID)3626,占用CPU时间有12分钟了!

    2.6K30

    Linux CPU负载过高排查方法

    问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?...步骤一、找到最耗CPU进程 工具:top 方法: 执行top -c ,显示进程运行信息列表 键入P (大写p),进程按照CPU使用率排序 图示: image.png 如上图,最耗CPU进程PID...为10765 步骤二:找到最耗CPU的线程 工具:top 方法: top -Hp 10765 ,显示一个进程的线程运行信息列表 键入P (大写p),线程按照CPU使用率排序 图示: image.png...如上图,进程10765内,最耗CPU的线程PID为10804 步骤三:将线程PID转化为16进制 工具:printf 方法:printf “%x” 10804 图示: image.png 如上图,10804...步骤四:查看堆栈,找到线程在干嘛 工具:pstack/jstack/grep 方法:jstack 10765 | grep ‘0x2a34’ -C5 --color 打印进程堆栈 通过线程id,过滤得到线程堆栈

    3.3K10

    性能分析(3)- 短时进程导致用户 CPU 使用率过高案例

    使用率、进程 CPU 使用率、平均负载 top ?...结果分析 平均负载已远超 CPU数量(2) Nginx、docker、php 相关的进程总的 CPU 使用率大概 40%左右 但是系统 CPU 使用率(us+sy)已达到 96%了,空闲 CPU(id)...只剩下 3.7% 提出疑问 为什么进程所占用的 CPU 使用率并不高,但是系统 CPU 使用率和平均负载会这么高?...CPU 使用率的进程了 嘶,发现 top 并没有满足我们的需求,看来得祭出另一个命令了 pidstat 查看是否有异常进程CPU 使用率过高 每秒取一次结果,共取 10 次 pidstat 1 10...CPU (id) 很低 但是找不到用户态 的 CPU 使用率很高的进程,最高就 6% 进一步通过 pidstat 查看是否有 CPU 使用率异常高的进程 发现 pidstat 行不通,再次通过 top

    1.5K10

    Linux CPU负载过高问题排查

    CPU负载过高异常排查实践与总结CPU负载过高异常排查实践与总结 观察各个进程资源使用情况,可以看出进程id为682的进程,有着较高的CPU占比 1.2 定位具体的异常业务 这里咱们可以使用 pwdx...CPU负载过高异常排查实践与总结CPU负载过高异常排查实践与总结 可得出结论:该进程对应的就是数据平台的web服务。...CPU负载过高异常排查实践与总结CPU负载过高异常排查实践与总结 可得出结论:是系统中一个时间工具类方法的执行cpu占比较高,定位到具体方法后,查看代码逻辑是否存在性能问题。...2、根因分析 经过前面的分析与排查,最终定位到一个时间工具类的问题,造成了服务器负载以及cpu使用率的过高。...CPU负载过高异常排查实践与总结CPU负载过高异常排查实践与总结 4、总结 在编码的过程中,除了要实现业务的逻辑,也要注重代码性能的优化。

    6.5K20

    趣味编程故事|java进程占用cpu过高怎么办,别急我来帮你

    小李:xx服务器 现在cpu已经100%了,我刚才查了下是java进程占用的 我:好的,我来看下 我赶紧打开我的电脑,连接上了xx服务器,使用top 命令查了下,确实是java进程占用cpu最高,我大脑飞速旋转想到...:这几天也没有对程序做什么大改动啊,怎么会出现这个问题呢; 于是我把本地代码切换到master分支,在本地跑了下发布到线上的代码,观察了一会,也没看见cpu 占用很高啊,我就很纳闷了,然后又上服务器看了下...,java 进程占用cpu 还是比较高的,这是怎么回事呢?...接下来场面就比较血腥了,前方高能预警,系好安全带 【高能预警】 我拿出了杀手锏,江湖上失传已久的九阴真经(其实就是平时的笔记哈哈),在上面找了一些命令,然后就是接下来的场景了: 【步骤一】找到最耗cpu...的进程 top 得到最占用CPU进程为:39890 【步骤二】找到39890进程中最消耗cpu的线程 top -d 1 -Hp 39890 在这里插入图片描述 得到最耗CPU进程为39900

    61300

    Tomcat占用CPU过高解决方法

    问题描述 在工作中经常遇到Tomcat占用CPU居高不下,top显示结果超过200%,请求无法响应,针对这种情况有以下处理办法进行排查。请求无法响应。...问题排查 1、获取进程信息 通过jdk提供的jps命令可以快速查出jvm进程 jps pid 2、查看jstack信息 jstack pid 3、将十进制pid转换为16进制 将十进制转换成16进制 #...printf "%x\n" 19713-->将第2步查到占用较高CPU的线程号转换为16进制,以便于jstack查看 4d01 #jstack pid | grep 0x4d01--> 0x4d01为第...占用量 简单点儿的方法则是,查出进程id后,通过如下命令查看该进程中每个线程的资源使用情况 top -H -p pid  -H用于显示某个进程的所有线程 从这里获取pid(线程id),转换为16进制,然后去...通过上述方法,查出tomcat进程对应的线程cpu占用率累积之和约80%,远小于top给出的200%+ 说明并不存在长期占用cpu的线程,应该是属于有许多短暂性的cpu密集计算。

    3.1K10
    领券