JVM调优使用工具04(远程连接)
目录
基于jsatd实现远程连接
1.配置安全策略
默认下,java安全策略比较严格,不允许jstatd直接启动。
。。。
。。。
。。。
没有考虑网络安全,不建议,有用到现搜吧。
基于JMX实现远程连接
匿名访问:
在jvm启动参数加入下面参数:
-Djava.rmi.server.hostname=172.16.2.xxx
-Dcom.sun.management.jmxremote.port=9999 //jmx监听端口
-Dcom.sun.management.jmxremote.rmi.port=1240 //指定RMI的通信端口,默认1099,
//需不需要不知道待验证
-Dcom.sun.management.jmxremote.authenticate=false //是否启用认证访问,默认true
-Dcom.sun.management.jmxremote.ssl=false //是否启用ssl, 默认true
-jar xxx.jar //如果是jvm参数貌似可以不用
如果防火墙端口没开,需要开启对应端口。
当authenticate=false不启用时,线上不安全,
开启认证
linux下:
1.准备账号文件,名称jmxremote.access,内容:
admin readwrite //账号为admin,权限为读写,
//可多个账号换行写就行
2.jmxremote.password,内容:
admin admin124 //账号,对应密码
//多个账号换行继续下
3.设置上面两个文件权限,执行命令:
chmod 600 jmxremote.access
chmod 600 jmxremote.password
4.设置启动参数:
-Djava.rmi.server.hostname=172.16.2.xxx
-Dcom.sun.management.jmxremote.port=9999 //jmx监听端口
-Dcom.sun.management.jmxremote.rmi.port=1240 //指定RMI的通信端口,默认1099,
//需不需要不知道待验证
-Dcom.sun.management.jmxremote.authenticate=true //是否启用认证访问,默认true
-Dcom.sun.management.jmxremote.access.file=./jmxremote.access
-Dcom.sun.management.jmxremote.password.file=./jmxremote.password
-Dcom.sun.management.jmxremote.ssl=false //是否启用ssl, 默认true
-jar xxx.jar //如果是jvm参数貌似可以不用
也需要开启对应防火墙端口,虽然安全,但比较繁琐。
还可以开启SSL,省略
基于SSH实现远程连接
比较安全,同时又方便配置。
请求过程:
本地--->连接SSH代理--->转发到你想请求的地址
配置流程:
1.在jvm启动参数加入下面参数:
-Djava.rmi.server.hostname=172.16.2.xxx
-Dcom.sun.management.jmxremote.port=1235 //jmx监听端口
-Dcom.sun.management.jmxremote.rmi.port=1250 //指定RMI的通信端口,默认1099,
//需不需要不知道待验证
-Dcom.sun.management.jmxremote.authenticate=false //是否启用认证访问,默认true
-Dcom.sun.management.jmxremote.ssl=false //是否启用ssl, 默认true
-jar xxx.jar //如果是jvm参数貌似可以不用
2.本机执行如下命令,SSH端口转发
ssh -v -D 9696 root@172.16.2.xxx
其中:
-v //verbose模式,打印详情
-D //动态应用程序级端口转发,将会分配一个Sock并监听本地端口
3.不用配置防护墙端口打开了,直接用visualvm连接:
1.点击左上角VisualVM--->Preferences--->NetWork
Manual proxy settings: //手动配置代理
SOCKS Proxy:172.16.2.xxx Port:9696
删掉No Proxy hosts
点击Apply
2.File--->Add JMX Connection:
Connection:172.16.2.xxx:1235
勾选Do not require SSL connection
点击ok