JMX经验点滴

2023-11-10

使用Java构建的大规模分布式架构网站。为了了解整个网站中的每个节点运行状况,在考虑性能、开发速度而不考虑多开发语言支持的情况下,JMX无疑是最适合的方式。

JMX(Java 管理扩展,Java Management Extensions)是Sun公司在J2SE 5中提出来的。JMX可以访问到java应用的信息,也可以访问到JVM的信息。一个最简单的方式,单独设立一个监控节点,轮训访问整个网站所有节点的信息,发现任何一台有问题,给运维人员发邮件或者短信报警。

对于Java开发工程师而言,开发量真心不大。简单例子(标准MBean,这里不讨论MXBean,Dynamic,Model和Open这些MBean)如下:

对于需要监控的数据类,创建其父接口,名字为类名+MBean。假设有一个管理类ConfigureManager,则让它的父接口为ConfigureManagerMBean

在main函数中,添加如下语句:

try {
			mBeanServer = ManagementFactory.getPlatformMBeanServer();
			objectName = new ObjectName("net.sourceforge.ppcool:id=ConfigureManager");
			mBeanServer.registerMBean(ConfigureManager.Instance(), objectName);
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
		}

即可让ConfigureManager内部数据暴露出来。

运行此程序时,需要在java执行启动命令中添加以下红色部分

nohup java -agentpath:/app/jprofiler8/bin/linux-x86/libjprofilerti.so=port=8849 -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=外网IP地址 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=提供服务的端口号 -Dcom.sun.management.jmxremote.ssl=false -jar ppgateway.jar /app/javagateway/gateway.conf &

分别说明一下:

-Dcom.sun.management.jmxremote 提供本地JMX查询服务

-Djava.rmi.server.hostname=外网IP地址 提供远程JMX查询服务,需要IP地址

-Dcom.sun.management.jmxremote.authenticate=false 无需做密码认证

-Dcom.sun.management.jmxremote.port=提供服务的端口号 提供远程JMX查询服务,需要端口号

-Dcom.sun.management.jmxremote.ssl=false 不使用SSL

具体其他信息,你可以参考:http://docs.oracle.com/javase/1.5.0/docs/guide/management/


对于节点的Java开发工程师,无需和监控点的开发工程师对接调试。只需要使用JConsole(在JDK的bin目录下)即可。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JMX经验点滴 的相关文章

  • Invalid or unexpected token:数据格式错误

    Uncaught SyntaxError Invalid or unexpected token 翻译成中文是 捕获的查询无效或意外的标记 代码逻辑没问题 那么就是数据问题了 把页面要展示的数据全部检查一遍后 果然发现疑点 1 多了单引号
  • 7-10 查找指定字符 (15分)

    7 10 查找指定字符 15分 本题要求编写程序 从给定字符串中查找某指定的字符 输入格式 输入的第一行是一个待查找的字符 第二行是一个以回车结束的非空字符串 不超过80个字符 输出格式 如果找到 在一行内按照格式 index 下标 输出该
  • [CTFshow]吃瓜杯复现wp

    热身
  • 利用opencv通过点击鼠标获取一张图片上点的像素点坐标

    include stdafx h include opencv2 highgui highgui hpp include opencv2 imgproc imgproc hpp include
  • centos - 初始化服务器环境

    初始化服务器环境 包括 1 安装wget 2 安装vim 3 安装jdk 4 安装perl 前提准备 1 将建好目录 root soft 2 将jdk和perl的安装包上传到 root soft目录下 jdkjdk 7u65 linux i
  • 【MySQL】《狂飙》电视剧火了,如果程序一直狂飙,扛不住了,怎么办呢?

    程序如果狂飙了怎么办呢 狂飙 电视剧你看了吗 程序 狂飙 你担心吗 性能优化步骤 适合创建索引的情况 不适合创建索引的情况 Explain 性能分析 id说明 select type 说明 type字段说明 Extra说明一下 狂飙 电视剧
  • 工作学习之余如何学习Python?

    作为一个学生 可能平常除了上课也没有很多别的时间了 今天就给大家分享一下 工作学习之余 应该如何学习Python 1 明确目标 对于零基础的人而言 要明确你学习Python仅仅是为了满足好奇心 还是有工作需要 比如办公自动化的需要 转行的需
  • 史上最强最全网站资源整理

    一 找资源利器 胖次 http www panc cc 爱挖盘 http www iwapan com 盘多多 http www panduoduo net 盘窝窝 http www panww com 百度网盘搜索 http uzi8 c
  • Qt3.6.3编译pc版本的时候:collect2:ld terminated with signal 11

    Qt3 6 3编译pc版本的时候 collect2 ld terminated with signal 11 原因 是swap交换空间不够用 解决 扩大虚拟内存 具体参考下文 http hi baidu com seaeechou blog
  • PCB高速信号布线技巧

    转载 玩转嵌入式 2021 07 31 18 59 电源布局布线 数字电路很多时候需要的电流是不连续的 所以对一些高速器件就会产生浪涌电流 如果电源走线很长 则由于浪涌电流的存在进而会导致高频噪声 而此高频噪声会引入到其他信号中去 而在高速
  • gdb调试驱动模块

    众所周知 要想使用gdb调试 那么在编译的时候一定要加上 g选项 因为编译器默认是不加 g选项的 因此在编译模块的时候 我们需要在Makefile里面添加如下信息 EXTRA CFLAGS g 在添加了上面的信息后 我们编译出来的 ko文件
  • yolo.h5文件问题的解决 - 吴恩达深度学习:目标检测之YOLO算法

    在吴恩达深度学习系列视频 卷积神经网络第三周作业中 加载预训练模型时 yolo model load model model data yolo h5 你会遇到yolo h5文件找不到的情况 而当你去网上下载了一个yolo h5文件时 可能
  • Java解一元二次方程

    import java util Scanner public class Calculate public static void main String args 创建键盘录入 Scanner sc new Scanner System
  • 网站搭建——Linux服务器环境搭建

    网站搭建 Linux服务器环境搭建 网站搭建 Linux服务器环境搭建 一 MySQL8安装 1 卸载MariaDB 2 下载 3 解压 4 安装MySql包 5 启动MySql 5 MySql临时密码 6 MySql设置 7 MySql登
  • kotlin支持Android低版本吗,如何从Android项目中删除Kotlin支持?

    步骤1 从build gradle Project 文件中删除或注释掉这些行 ext kotlin version 1 1 51 My kotlin version might be different from yours classpa

随机推荐

  • 如何用Nodejs写接口

    有时候前端需调用接口测试功能 但是相关的接口还没有开发好 或者没有相应的数据 这时候怎么办呢 这里教大家使用nodejs express写自己的接口 首先安装express cnpm install express save 然后新建js文
  • 9 种方法使用 Amazon CodeWhisperer 快速构建应用

    Amazon CodeWhisperer 是一款很赞的生成式人工智能编程工具 自从在工作中使用了 CodeWhisperer 我发现不仅代码编译的效率有所提高 应用开发的工作也变得快乐起来 然而 任何生成式 AI 工具的有效学习都需要初学者
  • redis的5种数据类型

    1 redis的5种数据类型 string 字符串 可以为整形 浮点型和字符串 统称为元素 list 列表 实现队列 元素不唯一 先入先出原则 set 集合 各不相同的元素 hash hash散列值 hash的key必须是唯一的 sort
  • 动态规划+状态压缩思路解决旅行者问题

    问题描述 小明目前在做一份毕业旅行的规划 打算从北京出发 分别去若干个城市 然后再回到北京 每个城市之间均乘坐高铁 且每个城市只去一次 由于经费有限 希望能够通过合理的路线安排尽可能的省一些路上的花销 给定一组城市和每对城市之间的火车票的价
  • 区块链技术在日常生活有那些影响?

    区块链首先是一种社会思潮 它预示着人类社会转型 换代的新时代的到来 区块链的技术基础是分布式网络架构 正是因为分布式网络技术的成熟 去中心 弱中心 分中心及共享 共识 共担的组织架构 商业架构和社会架构才有可能有效建立起来 大概就是从工程技
  • js实现约瑟夫问题(数目的游戏问题编程)

    17世纪的法国数学家加斯帕在 数目的游戏问题 中讲了这样一个故事 15个教徒和15 个非教徒在深海上遇险 必须将一半的人投入海中 其余的人才能幸免于难 于是想了一个办法 30个人围成一圆圈 从第一个人开始依次报数 每数到第九个人就将他扔入大
  • 将一个整数逆序输出·正序输出它的每一位数字

    逆序输出n的每位数字 void PrintReverse int n 定义一个函数 他的数据类型为整型 if n lt 0 printf n n 对于负数的整数 改变输出 的多少 do printf d n 10 当n不等于0时 n对10取
  • JAVA不可达代码

    说明这句代码之前有一个死循环 解决方法 一般是需要将代码放入死循环代码中 并设定一个停止循环代码的条件
  • golang jsoniter extension 处理动态字段

    1 背景 golang 原生 json 包 在处理 json 对象的字段的时候 是需要严格匹配类型的 但是 实际上 当我们与一些老系统或者脚本语言的系统对接的时候 有时候需要对类型需要做一下兼容 假设我们有以下需求 目标类型 输入 解析后
  • 图灵奖得主Judea Pearl:因果推断论文本周推荐(2022.8.8)

    刚刚 图灵奖得主 因果科学之父Judea Pearl 在推特上推荐了本周值得一读的10篇近期发表的因果推断相关论文 推荐列表下载 他评价道 他看到了人们对于 公平 责任 主题的兴趣日益浓厚 为帮助大家快速了解这些文章的主旨内容 我将推荐列表
  • python爬虫--Scrapy框架--Scrapy+selenium实现动态爬取

    python爬虫 Scrapy框架 Scrapy selenium实现动态爬取 前言 本文基于数据分析竞赛爬虫阶段 对使用scrapy selenium进行政策文本爬虫进行记录 用于个人爬虫学习记录 可供参考 由于近期较忙 记录得较粗糙 望
  • Windows10中Anaconda3安装手动设置环境变量以及安装pymysql

    安装Anaconda3时 在这一步 要把上面的设置环境变量勾选 这里由于我不想再卸载安装一次 所以是从网上找的图 这样安装好是没有问题的 如果我们没有勾选这个选项 那就需要我们手动配置环境变量了 首先点击win 找到Anaconde3的安装
  • 一、Confluence版本概述+服务器要求+安装前系统规划

    文章目录 一 Confluence版本概述 二 服务器要求 1 操作系统 2 硬件需求 3 云服务器推荐 三 安装前系统规划 整个安装过程将涉及到的目录 Linux系统 一 Confluence版本概述 Confluence根据安装方式来分
  • 重装Ubuntu系统(单系统)

    更新nvidia驱动后 重启电脑 无法打开 黑屏并且只有左上角有横杠闪烁 网上方法都不成功 于是决定重装系统 一 保存文件 1 开机并插入U盘 在黑屏界面 ctrl alt F1进入tty 输入用户账号密码进入 2 查看磁盘信息df命令 仅
  • Ubuntu18.04安装jdk1.8

    1 卸载Ubuntu18 04自带的openjdk Ubuntu18 04系统一般是自带openjdk的 首先要卸载openjdk然后再安装自己的jdk sudo apt get remove openjdk 2 Oracle官网下载jdk
  • Java自动化测试面向对象之package

    Java自动化测试面向对象之package 文章目录 Java自动化测试面向对象之package Java 包 package Java 包 package 为了更好地组织类 Java 提供了包机制 用于区别类名的命名空间 包的作用 1 把
  • vue3 自定义组件 v-model 原理解析

    1 input 中的 v model
  • 史诗级的突破,如何让GPT接口调用能绕过4000 tokens 的长度限制

    最近很高兴有机会较为全面深入地研究GPT ChatGPT这一热门技术 学到了不少东西 当然也遇到不少问题 其中一个问题就是 所有的GPT模型 都会有输入输出长度 加起来 的限制这个问题 就好像一个紧箍咒似的 我这段时间看到很多不同的一些办法
  • 过度绘制和渲染

    最近在解过度绘制的问题单时 对过度绘制和渲染进行了简要的学习 UI优化和UI渲染 UI 优化究竟指的是什么呢 应该包含两个方面 一个是效率的提升 我们可以非常高效地把 UI 的设计图转化成应用界面 在不同并且保证 UI 界面尺寸和分辨率的手
  • JMX经验点滴

    使用Java构建的大规模分布式架构网站 为了了解整个网站中的每个节点运行状况 在考虑性能 开发速度而不考虑多开发语言支持的情况下 JMX无疑是最适合的方式 JMX Java 管理扩展 Java Management Extensions 是