java 应用监控配置&&远程debug

远程debug(转)

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar

-Xdebug:通知JVM工作在debug模式下;
-Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境;
transport:监听Socket端口连接方式(也可以dt_shmem共享内存方式,但限于windows机器,并且服务提供端和调试端只能位于同一台机);
server:server=y表示当前是调试服务端,=n表示当前是调试客户端;
suspend:suspend=n表示启动时不中断,一般用于设置主动连接;suspend=y表示启动时就进入调试模式,一般用于被动连接;

本地监控参数
-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8087 -Dcom.sun.management.jmxremote.rmi.port=8087 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false

配置用户密码
jre/lib/management下
cp    jmxremote.password.template      jmxremote.password
chomd   +w   jmxremote.password   然后取消最后肉行注释即可

赋予文件权限:chmod   600    jmxremote.password    jmxremote.access

放开防火墙
sudo firewall-cmd --zone=public --add-port=8087/tcp --permanent
sudo firewall-cmd --reload

监控后可用jconsole远程:如图效果:

从上到下(粗略解释)

  1. 堆:对象实例 (java8+字符串常量池)
  2. 非堆: 不解释

  1. EdenSpace::新建对象区 –Xmn指定
  2. SurviverSpace::eden GC后会存到幸存区
  3. OldGen :缓存对象
  4. MetaSpace::类的对象(有限制会报OOM异常)+方法、常量池(无限制,用系统内存)
  5. CodeCache JIT编译的热点代码缓存
  6. Compressed Class Space:类对象

顺便给出点vm参数意见

-Xmn Sun官方推荐配置为整个堆的3/8。
-XX:NewRatio=2
-XX:SurvivorRatio=4
根据2:8定律为1:4, YongGen /newGen = 4/(4+1*2)

关于CodeCache:,右边是默认值

64-bit server, Java 8*  48M
64-bit server with Tiered Compilation, Java 8  240 MB
Jdk8中server模式默认采用分层编译方式,如果需要关闭分层编译,需要加上启动参数-XX:-TieredCompilation

-XX:ReservedCodeCacheSize=256M
在jdk8中,提供了一个启动参数XX:+PrintCodeCache在jvm停止的时候打印出codeCache的使用情况。其中max_used就是在整个运行过程中codeCache的最大使用量。可以通过这个值来设置一个合理的codeCache大小,在保证应用正常运行的情况下减少内存使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值