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

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

CPU经常会成为系统性能的瓶颈,可能: 内存泄露导致频繁GC,进而引起CPU使用率过高 代码Bug创建了大量的线程,导致CPU频繁上下文切换 通常所说的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命令定位到具体的线程。

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

    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占用过高定位?

    token=07193d87b188531f 下面来做个实战的测试,当xian线上遇到CPU占用过高怎么排查,如果是在面试的时候面试官这么问你的话,你回答查看下日志或者根据出错问题查看下百度,那么在面试官那你的印象将不会得到很好的认可...可以很清晰的看出有个test程序 使用ps -mp 进程 -o THREAD,tid,time 定位到具体的线程或代码 ?...接下一个老方法和旧方法 旧方法:jstack 进程ID | grep tid(16进制线程ID小写英文) -A60(老方法) 但对我现在的服务器好像不太使用所以我使用了个新方法 新方法:jstack...进程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命令,然后按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

    NodeJs 内存占用过高排查记录

    做这件事的意义和必要性个人觉得有这么几个方面吧: 从程序员角度讲:追求代码极致,不放过问题,务必保证业务的稳定性这几个方面 从资源角度讲:就是为了降低无意义的资源开销 从公司角度讲:降低服务器成本,给公司省钱...{ console.log('dump written to', filename); }); 受限于容器内使用 lrzsz 命令直接传输文件很慢,因此需要使用 scp命令传输到一台静态资源服务器上...TOP 命令 同时还想看一下具体的内存占用。发现居然有这么多的 worker process ,根据当前业务的实际使用情况不应该只有 2 ~ 4 个就够了么,为什么要开这么多的子进程。...可在此配置 node-agent 启动的子进程(业务进程)数量: 未配置(或配置为 auto、0),启动的子进程数量等于 CPU 物理核心 个数。...(业务进程)数量,所以默认就是用了 CPU 物理核心个数,因为是 2 个 cpu 所以再 *2,一共生成了 48 个‍♂️,每个 worker process 都要占用内存,所以内存占用一直居高不下。

    3.1K60

    Tomcat占用CPU过高解决方法

    问题描述 在工作中经常遇到Tomcat占用CPU居高不下,top显示结果超过200%,请求无法响应,针对这种情况有以下处理办法进行排查。请求无法响应。...问题排查 1、获取进程信息 通过jdk提供的jps命令可以快速查出jvm进程 jps pid 2、查看jstack信息 jstack pid 3、将十进制pid转换为16进制 将十进制转换成16进制 #...简单点儿的方法则是,查出进程id后,通过如下命令查看该进程中每个线程的资源使用情况 top -H -p pid  -H用于显示某个进程的所有线程 从这里获取pid(线程id),转换为16进制,然后去stack...通过上述方法,查出tomcat进程对应的线程cpu占用率累积之和约80%,远小于top给出的200%+ 说明并不存在长期占用cpu的线程,应该是属于有许多短暂性的cpu密集计算。...不是什么好东西,此项出现,检查是否被***) TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED:没有任何连接状态 解除Tomcat中POST方式上传文件的大小限制 当服务器

    3.1K10

    NodeJs 内存占用过高排查记录

    做这件事的意义和必要性个人觉得有这么几个方面吧: 从程序员角度讲:追求代码极致,不放过问题,务必保证业务的稳定性这几个方面 从资源角度讲:就是为了降低无意义的资源开销 从公司角度讲:降低服务器成本,给公司省钱...{ console.log('dump written to', filename); }); 受限于容器内使用 lrzsz 命令直接传输文件很慢,因此需要使用 scp命令传输到一台静态资源服务器上...TOP 命令 同时还想看一下具体的内存占用。发现居然有这么多的 worker process ,根据当前业务的实际使用情况不应该只有 2 ~ 4 个就够了么,为什么要开这么多的子进程。...可在此配置 node-agent 启动的子进程(业务进程)数量: 未配置(或配置为 auto、0),启动的子进程数量等于 CPU 物理核心 个数。...(业务进程)数量,所以默认就是用了 CPU 物理核心个数,因为是 2 个 cpu 所以再 *2,一共生成了 48 个‍♂️,每个 worker process 都要占用内存,所以内存占用一直居高不下。

    2.2K70

    Linux kworker 占用CPU过高情况解决

    kworker是3.x内核引入的,kworker 指工作者线程,用来执行工作队列中的work,一般由kthreadd建立,下面为大家分享一下Linux kworker 占用CPU过高情况。...先打开HTOP  htop 然后按H K(大写) 我们看到Kworker/0:0+events占用了大量CPU,下面参考下人家的回答 什么是kworker?...kworker表示进行“工作”(处理系统调用)的Linux内核进程。...在进程列表中可以有多个:kworker/0:1在第一个CPU内核上kworker/1:1是一个,在第二个CPU内核上是一个,依此类推。 为什么kworker占用您的CPU?...于是问了Fedora telegram群里的,翻了下arch/arm64/kernel/process.c 结论居然根本没有其他进程在使用CPU,Linux会自动保存CPU运作。

    21.5K30

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

    小李:xx服务器 现在cpu已经100%了,我刚才查了下是java进程占用的 我:好的,我来看下 我赶紧打开我的电脑,连接上了xx服务器,使用top 命令查了下,确实是java进程占用cpu最高,我大脑飞速旋转想到...:这几天也没有对程序做什么大改动啊,怎么会出现这个问题呢; 于是我把本地代码切换到master分支,在本地跑了下发布到线上的代码,观察了一会,也没看见cpu 占用很高啊,我就很纳闷了,然后又上服务器看了下...,java 进程占用cpu 还是比较高的,这是怎么回事呢?...top 得到最占用CPU的进程为:39890 【步骤二】找到39890进程中最消耗cpu的线程 top -d 1 -Hp 39890 在这里插入图片描述 得到最耗CPU的进程为39900 【步骤二...】将PID转换为十六进制 我们拿到了进程PID为:39900 我们需要将它转为十六进制,才能进行后续指令操作 printf "%x\n" 39900 得到结果:9bdc 【步骤三】打印当前线程的栈信息

    61800

    服务器CPU占用过高和哪些因素有关呢

    服务器CPU占用过高和哪些因素有关呢硬件因素以下分别从CPU温度,CPU超线程,硬件配置,硬件驱动和待机方面分析。...1、CPU温度过高如果CPU风扇散热不好,会导致CPU温度太高,使CPU自动降频,从而使CPU的性能降低。总之高温时CPU会自动将降低工作效率。...2、超线程超线程导致CPU使用率占用高,这类故障的共同原因就是都使用了具有超线程功能的P4 CPU。...3、不完善的驱动程序硬件的驱动程序没有经过认证或者是不合法的认证,会造成CPU资源占用率高。因大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。...5、CC可能是外部大量访问你的网站,导致CPU过高,达到CC的效果

    1.3K40

    w3wp占用CPU过高

    就可以看到占用内存或者 cpu 最高的进程 pid ! 2 在命令提示符下运行 iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。...注:有时非法重启或者写入日志错误都有可能造成 w3wp.exe 进程锁死。 2 设置应用程序池的CPU监视,不超过25%,每分钟刷新,超过限制时自动关闭。...注:方法是先停止IIS,再删除当天的网站日志(系统路径\System32\Logfiles\对应的网站目录下),然后开启IIS,等待CPU高占用的出现,这时在1分钟内打开新建的日志文件,按出现时间,对应检查里面所罗列出现的文件...注:有些写得不好的 ASP 程序,在访问数据库无法做到容错性,所以有些时候数据库损坏或者 ODBC 传送数据不正常,都有可能造成多次强制查询,从而体现为 w3wp.exe 高 CPU 占用

    1.6K20

    NodeJs 内存占用过高排查记录

    做这件事的意义和必要性个人觉得有这么几个方面吧: 从程序员角度讲:追求代码极致,不放过问题,务必保证业务的稳定性这几个方面 从资源角度讲:就是为了降低无意义的资源开销 从公司角度讲:降低服务器成本,给公司省钱...{ console.log('dump written to', filename); }); 受限于容器内使用 lrzsz 命令直接传输文件很慢,因此需要使用 scp命令传输到一台静态资源服务器上...TOP 命令 同时还想看一下具体的内存占用。发现居然有这么多的 worker process ,根据当前业务的实际使用情况不应该只有 2 ~ 4 个就够了么,为什么要开这么多的子进程。...可在此配置 node-agent 启动的子进程(业务进程)数量: 未配置(或配置为 auto、0),启动的子进程数量等于 CPU 物理核心 个数。...(业务进程)数量,所以默认就是用了 CPU 物理核心个数,因为是 2 个 cpu 所以再 *2,一共生成了 48 个‍♂️,每个 worker process 都要占用内存,所以内存占用一直居高不下。

    1.9K50

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

    今天断断续续的收到管理平台的异常报警,cpu占用过高和jvm old占用过高,这个时候赶紧去排查原因,下面记录了我的排查过程,可能里面还有不正确的地方,欢迎各位大佬指正,也欢迎大家关于类似的案例一起交流...登录服务器找到占用 cpu过高线程堆栈信息 ①通过 top 命令找到占用cpu最高的 pid[进程id] ?...定位到pid是 1469 ②通过 top -Hp pid 查看进程占用cpu过高的 tid[线程id] ③通过 printf '%x/n' tid 把线程id转化为十六进制 ④通过 jstack...查看占用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.6K20
    领券