jvm调优相关
查找占用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调优相关的更多相关文章
- 面试官问我JVM调优,我忍不住了!
面试官:今天要不来聊聊JVM调优相关的吧? 面试官:你曾经在生产环境下有过调优JVM的经历吗? 候选者:没有 面试官:... 候选者:嗯...是这样的,我们一般优化系统的思路是这样的 候选者:1. 一 ...
- JVM调优一些相关内容
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- JVM调优总结:调优方法
JVM调优总结:调优方法 2012-01-10 14:35 和你在一起 和你在一起的博客 字号:T | T 下面文章将讲解JVM的调优工具以及如何去调优等等问题,还有一些异常问题的处理.详细请看下文. ...
- [转]JVM调优总结:一些概念
JVM调优总结:一些概念 原文出处: pengjiaheng 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变 ...
- JVM调优-Java垃圾回收之分代回收
为什么要进行分代回收? JVM使用分代回收测试,是因为:不同的对象,生命周期是不一样的.因此不同生命周期的对象采用不同的收集方式. 可以提高垃圾回收的效率. Java程序运行过程中,会产生大量的对象, ...
- JVM调优浅谈
1.数据类型 java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对象本 ...
- JVM调优总结(转)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- JVM调优总结10-调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- JVM调优总结 + jstat 分析(转)
[转] JVM调优总结 + jstat 分析 JVM调优总结 + jstat 分析 jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒 ...
随机推荐
- SpringMVC(下)
一.访问静态资源 在进行Spring MVC的配置时,通常我们会配置一个dispatcher servlet用于处理对应的URL 在设置url-pattern时可以设置三种形式 (1)/* :拦截所有 ...
- nacos-server安装、运行 (docker)
https://nacos.io/en-us/docs/quick-start-docker.htmlhttps://github.com/nacos-group/nacos-docker mkdir ...
- jmeter BeanShell断言(四)
Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log ...
- 环境变量path的值大于1024的解决办法
原文传送门:https://blog.csdn.net/jytxj111/article/details/43916421 1.打开Path,点击默认文本(WIN 10),将所有路径备份下来 2.新建 ...
- idea搭建简单ssm框架的最详细教程(新)
为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...
- Java基础 三目运算符 在嵌套时,使用括号
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- np.meshgrid
- Mac下epub电子书制作编辑器 : Sigil
官方博客:https://sigil-ebook.com github项目地址:https://github.com/Sigil-Ebook V0.9.10下载:https://github.com/ ...
- vue---数据列表循环
使用vue进行数据循环是非常常见的操作,下面是用利用forEach和map来进行数据循环: 最常见的 forEach 循环: tbody.forEach((item,key) => { .... ...
- Jmeter里http接口的执行顺序是顺序执行
1,如果在一个线程组里则是顺序执行 2,如果不在一个线程组里,就勾选独立运行各个线程组,在一个运行结束后启动下一个线程组