一、jdb调试
- mqbroker(jvm参数配置)
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105321640-1866333304.png)
2.利用jdb/idea/eclipse 远程调试,同本地调试一样
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105443054-929170942.png)
二、jvisualvm jvm 监视
- 使用jstatd连接
nohup $JAVA_HOME/bin/jstatd -p 1099 -J-Djava.security.policy=<(echo 'grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};') &
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105603217-182427195.png)
- 使用jmx连接(需配置jvm启动参数据)
由于jvisualvm采器需要使用jmx,假如我们采样的是broker,那就需要在broker的启动jvm参数据配置jmx。
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10080 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105629948-98518597.png)
给如果想看到细分的gc情况,可以给jvisual装个插件。
https://visualvm.github.io/archive/uc/7u60/updates.xml.gz
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105728285-1739214375.png)
- 监视
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105752515-6828791.png)
- 线程
抽样器
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105950623-281988495.png)
抽样器-快照
例子:如下两图可以看出,拉取消息时,如果把堆外内存数据转到堆内再进行发送,主要耗时是在堆数据的拷贝。
![](https://images2018.cnblogs.com/blog/713585/201802/713585-20180227105915169-511706066.png)