java jmx 开启_动态开启jmx服务
java可以利用编写mbeans来暴露很多程序指标,jdk自己也有很多指标,例如内存使用以及划分。很多小伙伴都表示这些值不少jstat就可以获取查看的吗,ssh登录上去就可以,也很方便。jstat确实不错,但是他在内存的信息暴露上是缺失的,没有直接内存的使用。在现在的程序中,直接内存的使用已经不是什么稀有操作了。我们应该如何查看呢?
jmx暴露了这个指标。
很多程序的指标也在这里暴露,例如spark等等,这里不在列举jmx的优点。
为什么要动态开启
主要原因有以下两个:
jconsole可以本地attach获取数据,这个是不需要单独开启端口,只要是本机就可以,这样带来了一个很大的麻烦是图形界面,我们的跑的linux系统其实大部分是没有图形界面的,总不能为此再安装一个图形界面,到时候用vnc等工具远程上去查看吧。jconsole也支持远程模式,通过开启端口,找个有客户端的机器进行连接,也可以获取数据。但是需要在jvm参数启动的时候就开启服务。
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=xx
-Dcom.sun.management.jmxremote.port=xx
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
很多程序运行的信息很难重现,现在遇到的现象如何没有足够的信息,也不知道什么操作可以成功复现出来。例如现在java进程内存用了5g,其余的空间都比较小,那么到底是jvm层面有一定的内存泄漏还是直接内存的使用。这个成了一个不可推测的地方,如果当时没有开启,那么给排查问题一定会带来很多的烦恼。
动态特性
以上问题在java7中其实有了解决,但是很多时候并不在意。
jcmd带来了动态开启jmx的能力。
jcmd本身是一个命令行,这样就非常方面ssh到机器上操作,不需要依赖什么图形环境,给开启带来了一定的便利性,jcmd可以通过和java进程交互,直接开启java进程的端口
jcmd pid ManagementAgent.start jmxremote.port=9999 jmxremote.ssl=false jmxremote.authenticate=false
在jconsole登录的时候选择远程进程,通过ip:port就可以连接成功。
扩展
除了以上的方式,我们是不是有其他手段也可以做到呢?
我们可以选择javaagent的模式,编写代码读取jmx,可以通过动态attach的模式以类似http等方式进行暴露。这个可以参考prometheus的jmx_exporter。但是开源版本并没有支持动态attach。这个改造并不难,编写agentmain,然后写个attach程序即可。如果想试试的可以进行简单改造。
小结
注意jmx的能力是要比其他的工具暴露多一些的,当不满足时,这些都是我们可以使用的方法。
java jmx 开启_动态开启jmx服务相关推荐
- java service包_利用 javaService 发布服务(jar包)
jar在java中作为一种项目的发布形式比较普遍,往往为了容易管理更需要作为一种系统服务发布--起码服务器重启了不用人工去重新打开你所以往运行的jar文件. 这里简单的介绍下怎么将jar发布到winN ...
- 硬件nat关闭还是开启_路由器开启NAT和防火墙功能,性能会下降吗?
最近在思考一个问题,图书馆里书越来越多,书店的书也越来越多,人类的问题非但没有减少,反而越来越多? 我从事计算机网络行业,谈谈我的观点. 计算机网络技术发展特别快,有些技术从诞生到消失可能只有几年的时 ...
- java jmx 监控_利用VisualVm和JMX远程监控Java进程
在前一篇文章里我们发现通过jstatd + VisualVm的方式,不能获得Java进程的CPU.线程.MBean信息,这时JMX就要登场了. 自Java 6开始,Java程序启动时都会在JVM内部启 ...
- java验证码 memcache_java连接开启了sasl的memcache服务
java连接开启了sasl的memcache服务 public class Xmemcache { public static void main(String[] args) { // TODO A ...
- Dubbo 3.0 - 开启下一代云原生微服务
作者 | 郭浩(项升) 阿里巴巴经济体 RPC 框架负责人 **导读:**本文整理自作者于 2020 年云原生微服务大会上的分享<Dubbo3.0 - 开启下一代云原生微服务>,主要介绍 ...
- 使用JMX透过防火墙远程监控tomcat服务
为什么80%的码农都做不了架构师?>>> JDK的bin目录下有jvisualvm或jconsole可以监控本地和远程jvm实例的运行动态(包括cpu,内存等), 对于性能分析 ...
- jmx 替代_使用JMX作为Ganglia的现代替代品进行CLDB监视
jmx 替代 有许多选项可用于监视MapR集群的性能和运行状况. 在本文中,我将介绍使用Java管理扩展(JMX)监视CLDB的鲜为人知的方法. 据最受尊敬的MapR数据工程师之一,Akihiko K ...
- linux远程开启不挂起的服务
解决Linux关闭终端(关闭SSH等)后运行的程序自动停止 λ nohup --help Usage: nohup COMMAND [ARG]...or: nohup OPTION Run COMMA ...
- MySQL:动态开启慢查询日志(Slow Query Log)
前言 在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一.要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改 慢日志设置方式 写入文件 写入数据库 实践操作 ...
最新文章
- 剑指 offer set 22 数组中的逆序数
- 无法创建接口的实例_什么是接口?
- windows7电脑删除文件特别慢的解决方法
- 操作系统之进程管理:9、进程互斥的硬件实现方法
- 三大性质总结:原子性,有序性,可见性
- 下载软件的临时文件思路和实现
- Java基础篇:如何使用continue语句
- Cortex-M开发板密码登陆界面
- Spyder汉化(python汉化)
- Connection terminated as request was larger than XXX
- 米家扫地机器人充满电需要多长时间_【米家智能扫地机器人使用总结】APP|充电|电量|滚刷|厚度_摘要频道_什么值得买...
- ReDet A Rotation-equivariant Detector for Aerial Object Detection 论文学习
- Redis异地多活原理简介
- c++学习:多线程;顺序容器;智能指针
- 如何修改CAD制图时光标尺寸大小?
- 通信原理_2 确定信号分析
- IPD(集成产品开发)文一
- [转载]关于中文乱码问题的一些解决方案和经验
- 解压chm后由hhc生成html索引页面
- C++11 Type-rich编程