性能诊断定位之内存问题排查(四):CentOS7系统中,JVM内存诊断

目录

1. 要求

2. 处理思路

3. 示例演示 (CentOS7 环境中)

3.1 环境工具:

3.2 操作步骤

3.2.1 JForum环境配置 (配置在tomcat中),启动Tomcat         

3.2.2 编写JMeter脚本 (脚本的编写和运行,在win10端)

3.2.3 运行jmx脚本(win10中),持续访问CentOS7中的Jforum页面

3.2.4 在CentOS7中,通过top命令查看堆具体情况,找出占用CPU高的线程的PID

 3.2.5根据上面获取的PID,使用命令 jstat 查看堆内存整体使用情况

3.2.6 通过上面获取的PID, 使用命令 jmap 查看堆内存使用详情 

3.2.7 使用命令生成.dump文件: jmap -dump:format=b,file=${fileName}.dump $pid

3.2.8 将.dump文件从CentOS7系统中拷贝到win10系统,可用WinSCP

3.2.9 在MAT软件中打开.dump,分析,定位问题


1. 要求

通过JMeter脚本,压测JForum,进行CPU和内存诊断

2. 处理思路

2.1 JForum环境配置 (配置在tomcat中)         

(1)下载classes.7z,将解压出来的classes文件替换原来老的classes.

   路径为: ${TOMCAT_HOME}\webapps\jforum-1.1.9\WEB-INF\classes

 (3)启动Tomcat

2.2 编写并执行JMeter脚本:脚本要求:访问随机板块 和 最新主题, 3个并发线程

2.3 jmap生成.dump文件

2.4 在MAT中打开.dump文件,解析并定位问题

3. 示例演示 (CentOS7 环境中)

3.1 环境工具:

(1)CentOS7

(2)apache-tomcat-7.0.86 (内置Jforum)

(3)jforum-2.1.9 (已导入相关数据库sql文件,将配置在tomcat中)

(4)classes.7z (提前准备好的文件,将替换jforum目录下原始的class)

(5)JMeter (用来生成执行访问Jforum页面的脚本)

(6)mat (MemoryAnalyzer.exe,用来打开dump文件)

3.2 操作步骤

3.2.1 JForum环境配置 (配置在tomcat中),启动Tomcat         

(1)准备好apache-tomcat-7.0.86,解压即可(可mv改名),放到CentOS7的/usr目录下

(2)将jforum-2.1.9(已导入并配置好相关的sql数据库文件),拷贝到tomcat目录下

(3)下载classes.7z (提前准备好的),将解压出来的classes文件替换原来老的classes.

   路径为: ${TOMCAT_HOME}\webapps\jforum-1.1.9\WEB-INF\classes

 (4)启动Tomcat

(5)在浏览器端打开Jforum相关页面,验证网页是否可以顺利访问

3.2.2 编写JMeter脚本 (脚本的编写和运行,在win10端)

脚本要求:访问随机板块 和 最新主题, 3个并发线程

(1)启动JMeter

(2)编写JMeter脚本:访问随机板块 和 最新主题, 3个并发线程

3.2.3 运行jmx脚本(win10中),持续访问CentOS7中的Jforum页面


3.2.4 在CentOS7中,通过top命令查看堆具体情况,找出占用CPU高的线程的PID

这里,占用CPU高的线程,其实就是我们前面JMeter脚本持续访问Jforum页面导致的

 
3.2.5根据上面获取的PID,使用命令 jstat 查看堆内存整体使用情况

3.2.6 通过上面获取的PID, 使用命令 jmap 查看堆内存使用详情 

 

3.2.7 使用命令生成.dump文件: jmap -dump:format=b,file=${fileName}.dump $pid

如下,生成14778.dump文件

3.2.8 将.dump文件从CentOS7系统中拷贝到win10系统,可用WinSCP

图略

3.2.9 在MAT软件中打开.dump,分析,定位问题

猜你喜欢

转载自blog.csdn.net/sulia1234567890/article/details/120723514