查找占用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. 第09组 Alpha冲刺(2/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:http://edu.cnblogs.com/campus/fzu/SoftwareEngineeri ...

  2. js中isNaN和Number.isNaN的区别

    isNaN 当我们向isNaN传递一个参数,它的本意是通过Number()方法尝试将这参数转换成Number类型,如果成功返回false,如果失败返回true. 所以isNaN只是判断传入的参数是否能 ...

  3. js - 总结一下条件语句优化

    [笔记] // 简单的语句用三目运算符也可以的(除了需要return的) 1 == 1 ? console.log('执行了...1') : console.log(); 1 == 2 ? conso ...

  4. python list 和 tuple详解

    list------------------------------------------------------------------------ Python内置的一种数据类型是列表:list ...

  5. spring @Autowired注入map

    注入map,平常一般不会这么做,今天看一段老代码时发现有这么个用法.补习一下. @Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会 ...

  6. v-if和v-for一起使用的几个方法

    方法一(推荐): 不带if <ul> <li v-for="(item, index) in list" :key="index" > ...

  7. odoo开发笔记 -- 模型后台方法返回前端form视图和tree视图的写法

    待补充: 参考:工作单跳转到通关清单 --form(一对一) 工作单跳转到报关单列表 --tree (一对多)

  8. Linux_CentOS 中systemctl 管理服务、防火墙 firewalld 以及 SELinux 配置

    使用 systemctl 管理服务 systemctl 就是 service 和 chkconfig 这两个命令的整合,在 CentOS 7 就开始被使用了,systemctl是系统服务管理器命令,它 ...

  9. [转]nodejs导出word

    转载自:https://blog.51cto.com/13803916/2133602 需要先下载依赖: npm install officegen 亲测可用: var officegen = req ...

  10. 使用transform后z-index失效的解决方法

    transform作用的元素增加translateZ,父级元素增加 transform-style: preserve-3d; <div class="father"> ...