java 程序cpu占用过高排查

这篇具有很好参考价值的文章主要介绍了java 程序cpu占用过高排查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、top命令查看cpu占用最高程序

top

java进程cpu使用率高排查,Java,java

取得cpu占用最高的PID: 27791

2、判断java程序是直接运行在宿主机还是在容器中

方式一 cgroup

cat /proc/<PID>/cgroup

如果输出中包含有类似 /docker/<container_id> 的字符串,就表示该进程在 Docker 容器中。

java进程cpu使用率高排查,Java,java

方式二 lsns

  lsns命令查看程序的命名空间  ,如果显示的命名空间信息中有 ipc, mnt, net, pid, user, uts,那么该 PID 很可能在一个 Docker 容器中。

lsns -p PID

java进程cpu使用率高排查,Java,java

方式三 jps

   jps命令查看当前在服务器执行的java程序

jps

java进程cpu使用率高排查,Java,java

a、占用CPU最高的PID在jps的列表里,java进程可能运行在服务器,可直接执行jstack PID

b、占用CPU最高的PID不在jps列表里,java进程可能运行在容器中。

3、执行jstack

     a、java进程直接运行在宿主机上

        jstack命令查看线程、堆栈情况

jstack PID

     b、java进程运行在docker容器里

        (1)宿主机上直接jstack

                

#1、查看java进程在容器内的PID
docker exec -it $containerid /bin/ps x

#2、获取容器内JAVA_HOME路径
docker inspect --format '{{ range .Config.Env }}{{ if eq (index (split . "=") 0) "JAVA_HOME" }}{{ index (split . "=") 1 }}{{ end }}{{ end }}' $containerid

#说明:docker inspect --format '{{.Config.Env}}' $containerid 是获取容器内的环境变量,如果没配环境变量需要到容器里查看,可用 which java 命令

#3、执行jstack
docker exec -it $containerid $JAVA_HOME/bin/jstack $pid

        (2)进入到容器执行jstack

        定位docker容器。根据lsns -p PID获取到的信息(jar包名称可定位项目)定位到docker容器,需人工判断

lsns -p PID
docker ps | grep  容器相关信息(名称、端口、容器ID等)

      进入到docker容器

docker exec -it 容器ID /bin/bash
#如果/bin/bash不存在,可使用/bin/sh

     容器内查看进程ID,ps、jps、top命令都可以

     执行jstack PID

        文章来源地址https://www.toymoban.com/news/detail-727811.html

4、分析jstack信息

到了这里,关于java 程序cpu占用过高排查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java CPU或内存使用率过高问题定位教程

    Spring cloud微服务广泛应用后,服务的监控和运维压力也与日俱增,经常有服务出现CPU或者内存使用率过高的告警,那么遇到这样的问题我们该如何排查呢?我们可以借助哪些工具来定位问题呢?本文将介绍一下遇到此类问题的解决思路和方法。 1.通过应用日志定位思路 对于业

    2024年03月28日
    浏览(59)
  • 排查Docker容器Java程序CPU过高问题以及处理方法

    因为Docker里java程序运行环境是用的jre,没有top和jstack命令,所以要在容器里安装top和jattach,来查看和导出线程信息。 系统:Debian10 镜像:openjdk:8u275-jre-slim-buster 容器ID:99abe55a98dc 一.安装top:     1.进入容器:       2.因为官方镜像地址太慢,所以 修改源地址:https://develop

    2024年02月11日
    浏览(68)
  • Vmmem进程(WSL)占用CPU或内存资源过高的解决办法

            有没有一瞬间,在开启docker或打开虚拟机时,内存瞬间飚增,进行查看进程消耗是一个Vmmem的进程在作祟,那么Vmmem是什么呢,又如何进行限制呢!         Vmmem: 是一个系统合成的虚拟进程,用于表示虚拟机小航的内存和CPU资源。换句话说,您看到的Vmmem消耗

    2024年02月13日
    浏览(77)
  • Java应用CPU占用过高故障排除

    最近测试反馈测试环境接口偶现有访问超时,然后APP提示是网络失败,看了一下测试环境的应用完全没啥问题,一直以为是网络问题。 今天测试有反馈了,赶紧看了一下测试服务器,这次终于有症状了,CPU直接飙到300%了。 尽然问题复现了,直接开干,定位问题 1、定位问题

    2024年02月10日
    浏览(43)
  • 解决antimalware service executable程序占用CPU过高(有效)

    有很多Win10的用户有时会莫名的电脑非常的卡,打开任务管理器查看进程情况,发现有一个Antimalware service executable进程CPU和内存占用率极高。 这个进程也无法关闭(妥妥的流氓): Antimalware Service Executable是win10内置杀毒软件windows defender的一个进程。对于普通用户来说,一般情

    2024年02月12日
    浏览(42)
  • 【Java】 服务器cpu过高如何排查和解决?

    对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高。 线上系统突然运行缓慢,CPU飙升,甚至到100%,以及Full GC次数过多,接着就是各种报警:例如接口

    2024年02月11日
    浏览(56)
  • 【Linux】Linux突然发现CPU占用100%该怎么办?如何排查进程(带你一文解决)

    目录 Linux的CPU发现占用率100%,一般会由什么情况引起? 1、进程负载过高: 2、错误配置的服务或应用程序: 3、恶意软件或病毒: 4、不良硬件或驱动程序: 5、系统内核问题: 6、CPU过热: 对于排查CPU占用率过高的原因,可以采取以下步骤和工具: 一、top/htop方法 1、使用

    2024年02月08日
    浏览(50)
  • k8s排查Java应用CPU负载过高问题

    因为k8s发布的pod还未加入资源的监控,在查看pod负载时发现其中pod占用1核CPU 2.1通过debug排查 下一步可以到对应的node节点查看对应进程的信息,也可以通过debug在当前节点进行排查(当节点太多懒得登录过去时) top命令找到所在节点进程信息,找到问题进程 查看详细线程 通

    2024年02月05日
    浏览(52)
  • 【Java高CPU占用排查步骤】

    当Java应用程序在Linux系统上的CPU使用率达到100%时,可能会导致系统响应变慢,甚至无响应,影响应用程序的正常运行。下面是排查Java应用程序CPU使用率高的步骤: 可以使用top命令查看Linux系统上Java进程的CPU使用率,找到占用CPU资源较高的进程。可以按照CPU使用率排序,找到

    2024年02月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包