查找占用cpu过高的线程,并排查原因

1、查找jvm进程

(1)jps -l
(2)ps -ef|grep java
这一步骤可以得到进程号,假如进程号为9527

2、查找该jvm进程中占用cpu比较高的线程

(1)top -Hp 9527
这一步可以得到一批线程号,根据使用率从高到低排序,找到使用率最高的那个,假如线程号为3366110

(2)printf "%x\n" 3366110
将此线程号转成16进制,结果为:335cde

3、从stack信息中找到335cde所对应的线程及内容

(1)jstack -l 9527 | grep -C 5 335cde
-l 可以查看线程中的锁的附加信息,也可以不加-l
9527为pid
grep -C 5 549d为输出《335cde》前后5行
335cde为16进制的线程编号

4、分析335cde所对应的内容,一般很容易定位到代码,并找到原因

注:第三步也可以改为 -> 导出stack信息,然后查找335cde

jstack pid > jstack4756jis
从jstack4756jis这个文件中查找335cde,即可找到消耗资源最高的线程执行的程序
如果jstack pid卡住了,可以使用jstack -F pid 强行输入

导出堆信息进行排查

jmap获取堆信息
jmap -dump:format=b,file=fileName.hprof pid

查看内存回收情况

jstat -gcutil pid

jconsole、jvisualvm连接远程服务,服务端的配置

1、修改catalina.sh信息,添加以下

JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=47.107.80.230 -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.access.file=/hzx/installsoftware/java/jdk1.8.0_192/jre/lib/management/jmxremote.access"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/hzx/installsoftware/java/jdk1.8.0_192/jre/lib/management/jmxremote.password"

2、修改用户jdk安装目录jre/lib/management下jmxremote.access和jmxremote.password信息

jmxremote.access添加以下信息

admin readonly
root readwrite
create javax.management.monitor.,javax.management.timer.

jmxremote.password添加以下信息
monitorRole 12345678 //用户名:monitorRole,这个名字系统是预先设置好的
admin 123456 //自定义了用户名:admin
root 123456 //自定义了用户名:root

3、将jmxremote.password权限修改为600(chmod 600 jmxremote.password)

4、将jmxremote.access和jmxremote.password用户/用户组设置成相同(chown 用户:用户组 jmxremote.password)

jvm调优相关的更多相关文章

  1. 面试官问我JVM调优,我忍不住了!

    面试官:今天要不来聊聊JVM调优相关的吧? 面试官:你曾经在生产环境下有过调优JVM的经历吗? 候选者:没有 面试官:... 候选者:嗯...是这样的,我们一般优化系统的思路是这样的 候选者:1. 一 ...

  2. JVM调优一些相关内容

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...

  3. JVM调优总结:调优方法

    JVM调优总结:调优方法 2012-01-10 14:35 和你在一起 和你在一起的博客 字号:T | T 下面文章将讲解JVM的调优工具以及如何去调优等等问题,还有一些异常问题的处理.详细请看下文. ...

  4. [转]JVM调优总结:一些概念

    JVM调优总结:一些概念 原文出处: pengjiaheng 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变 ...

  5. JVM调优-Java垃圾回收之分代回收

    为什么要进行分代回收? JVM使用分代回收测试,是因为:不同的对象,生命周期是不一样的.因此不同生命周期的对象采用不同的收集方式. 可以提高垃圾回收的效率. Java程序运行过程中,会产生大量的对象, ...

  6. JVM调优浅谈

    1.数据类型 java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对象本 ...

  7. JVM调优总结(转)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  8. JVM调优总结10-调优方法

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...

  9. JVM调优总结 + jstat 分析(转)

    [转] JVM调优总结 + jstat 分析 JVM调优总结 + jstat 分析 jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒 ...

随机推荐

  1. php中socket、fsockopen、curl、stream 区别

    socket 水泥.沙子,底层的东西fsockopen 水泥预制件,可以用来搭房子curl 毛坯房,自己装修一下就能住了 水泥.沙子不但可以修房子,还能修路.修桥.大型雕塑.socket也是,不但可以 ...

  2. mariadb使用with子句重写SQL性能提升5倍

    几个月前,我们有个产品的开发反馈了个问题,说有个组织结构的查询很慢,几千行的复杂关联需要1秒钟,表示太慢了,原语句如下: SELECT org.org_id, org.dimension, org.o ...

  3. 微信小程序开发——base64位图片显示问题

    前言: 目前小程序项目需要后端借口提供验证码图片,后端是以base64位返回的,按照H5的做法,前边拼上 data:image/png;base64, 应该就可以了,关键代码如下: H5: <i ...

  4. [LeetCode] 681. Next Closest Time 下一个最近时间点

    Given a time represented in the format "HH:MM", form the next closest time by reusing the ...

  5. 【视频开发】 ffmpeg支持的硬解码接口

    To enable DXVA2, use the --enable-dxva2 ffmpeg configure switch. To test decoding, use the following ...

  6. idea创建一个springboot项目

    第一种通过maven创建: 1.点击Create New Project 2.创建maven项目,选择jdk版本,点击next. 3.填写GroupId和ArtifactId,都是自定义的,然后点击n ...

  7. Oracle current redo.log出现坏块后的不完全恢复案例一则

    1异常出现      8月30日下午2时左右,接同事电话,说数据库异常宕机了,现在启动不了. 2初步分析 我让现场把alert.log发过来,先看看是什么问题.   关于ORA-00353和ORA-0 ...

  8. idea2019.2激活码到2020.7.1【已失效】,有另外的

    ZKVVPH4MIO-eyJsaWNlbnNlSWQiOiJaS1ZWUEg0TUlPIiwibGljZW5zZWVOYW1lIjoi5o6I5p2D5Luj55CG5ZWGIGh0dHA6Ly9pZ ...

  9. [转帖]Socat 入门教程

    https://www.hi-linux.com/posts/61543.html 现在安装k8s 必须带 socat 今天看一下socat 到底是啥东西呢. Socat 是 Linux 下的一个多功 ...

  10. [转帖]SpringBoot集成redisson分布式锁

    SpringBoot集成redisson分布式锁 https://www.cnblogs.com/yangzhilong/p/7605807.html 前几天同事刚让增加上这一块东西. 百度查一下 啥 ...