VisualVM 监控注册成 Windows 服务的 Tomcat 之 jstatd 方式一
VisualVM Windows 诊断工具 About 1,959 words说明
jstatd
方式监控与JMX
方式多了一个可以观察GC
的特点,即Visual GC
可以展示堆区及GC
情况。
注意
因为Tomcat
是以Windows Services
方式启动,启动Tomcat
的用户是SYSTEM
,比Administrator
更高级别。所以,如果只是普通的启动jstatd
是无法监控到Tomcat
信息的。
即使把Tomcat
使用指定用户名启动,且jstatd
同样使用该用户启动,也无法监控到。
再即使使用提权工具psexec
启动jstatd
,同样无法监控到。
前提条件
打开Windows Services
的Tomcat
的属性,选择Log On
标签页,选择Local System account
,重启一下服务。
下文创建的jstatd
的Windows Services
也以Local System account
启动。
解决方法
安全策略文件
Java8
及以前。
grant codebase "file:${java.home}/lib/tools.jar" {
permission java.security.AllPermission;
};
grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};
Java11
,其实是Java9
之后就使用此配置文件了,因为Java11
是LTS
所以就以Java11
为例子了。
grant codebase "jrt:/jdk.jstatd" {
permission java.security.AllPermission;
};
grant codebase "jrt:/jdk.internal.jvmstat" {
permission java.security.AllPermission;
};
脚本方式
指定了jstatd
监听12345
端口,且安全策略使用C:\jstatd.all.policy
文件。
@echo off
"C:\jdk-11\bin\jstatd.exe" -p 12345 -J-Djava.security.policy=C:\jstatd.all.policy
创建服务
sc create jstatd binpath= "C:\jstatd.bat"
启动服务
打开Windows Services
,找到jstatd
服务,点击启动后可以直接点击取消,查看任务管理器中是否已经有jstatd.exe
进程启动,且用户名是SYSTEM
。
命令方式
CMD
中直接创建服务,双引号添加了转义符。
sc create jstatd2 binpath= "\"C:\jdk-11\bin\jstatd.exe\" -p 12345 -J-Djava.security.policy=\"C:\jstatd.all.policy\""
CMD
中直接启动服务
sc start jstatd2
报错不用管,jstatd.exe
进程已经启动,可以通过任务管理器查看。
C:\WINDOWS\system32>sc start jstatd2
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
查看 VisualVM
添加jstatd
连接,输入端口为12345
,即可查看到本机所有的Java
服务了。
备注
如果要查看Monitor
标签页的CPU
监控和Threads
标签页,需要在Tomcat
启动参数中添加JMX
。
-Dcom.sun.management.jmxremote.port=19999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
参考
https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jstatd.html
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/sc-create
https://blogs.oracle.com/nbprofiler/monitoring-java-processes-running-as-a-windows-service
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓