引子
- 系统出现性能问题一筹莫展?
- 引入一堆框架和库之后,不知道到底开了多少线程?
- 内存飙升,甚至OOM,但是不知道内存耗费在了哪里?
- 维护旧系统,使用三方脚本,不知道对方到底设置了哪些参数?
- 耗时统计只局限在自己的代码里,对SDK中方法耗时无从分析?
性能分析第一步——采集指标
监控性能的工具
- 命令行工具:jstat、jcmd、jmap……
- 可视化工具:jvisualvm、JMC(Java Mission Control)、JProfiler
- 运维监控:Prometheus
如何开启jvisualvm远程监控
添加JVM启动参数:
- -Djava.rmi.server.hostname=xx.xx.xx.xx(机器的IP)
- -Dcom.sun.management.jmxremote
- -Dcom.sun.management.jmxremote.port=11099(jmx端口)
- -Dcom.sun.management.jmxremote.authenticate=false
- -Dcom.sun.management.jmxremote.ssl=false
示例:
java -Djava.rmi.server.hostname