- 打开jvisualvm,使用jvisualvm监控服务的cpu,线程状态,堆的情况
在service.sh中添加
OPTIONS="$OPTIONS -Dcom.sun.management.jmxremote.port=20817 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
前提:要确认使用端口(比如20817)没有被占用
2.打开dubbo服务端日志,监控dubbo服务端运行情况
1)配置<dubbo:application logger="slf4j" />
2)logback.xml中配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- dubbo log start-->
<substitutionProperty name="LOG_HOME_DUBBO" value="/apps/permission/pms"/>
<timestamp key="byDate" datePattern="yyyyMMdd"/>
<appender name="dubboRolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<file>${LOG_HOME_DUBBO}/MTP-DUBBO.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME_DUBBO}/DEMO-%d{yyyy-MM-dd}.%i-DUBBO.zip</fileNamePattern>
<maxHistory>30</maxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<immediateFlush>true</immediateFlush>
</encoder>
</appender>
<logger name="com.alibaba.dubbo" level="DEBUG">
<appender-ref ref="dubboRolling"/>
</logger>
<!-- dubbo log end-->
</configuration>
3.编写jmeter脚本
1)设置线程数和吞吐
2)运行脚本 /apps/jmeter/bin/jmeter.sh -n -t xxx.jmx
4. 通过jstat -gcutil 端口号 2000查看full gc
5. 通过top命令查看内存情况
6. 生成dump文件:jstack 端口号 >xxx.log 查看进程信息