zoukankan      html  css  js  c++  java
  • 排障利器之远程调试与监控 --jmx & remote debug

       监控和调试功能是应用必备的属性之一,其手段也是多种多样。

      一般地,我们可以通过:线上日志, zabbix, grafana, cat 等待系统做一问题留底,有问题及时报警,从而达到监控效果。

      而对于应用的调试,我之前的文章也提到了几个工具,当然,我对于 arthas 是调试赞扬的。请参考: 线上应用调试利器 --Arthas

    但有句老话: 一千个人眼里有一千个哈姆雷特!所以,你应该要知道更多的方式。

      本文来看看咱们另一个调试调试与监控方式!

    1. jmx 怎么样 ?

      百科解释: JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

      简单来说就是,通过jmx,你可以直接观察到jmx管理的东西,从而达到实时监控的效果!另外,还可以通过远程更改jmx的值,从而达到控制管理作用;

      要查看监控效果,最简单的方式,是直接使用 jvisualvm 直接连接到远程进行观察,如下:

      如果想要更改 jmx 的值,则还是要写点代码的,进行反射后就可以更改了!

    2. jmx 如何开启?

      如果你对如上的结果还比较满意,那么,你应该考虑下怎么开启jmx了!

      其实很简单,一般借助框架进行操作,而应用自身则配置一个 jmx 端口就行了!

    -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=8573

      这样开启后,就可以本地连接进行查看了。当然了,如上操作是危险的,请慎重!

      另外,我们一般可以多安装两个插件,Mbean 和 Thread Inspector 以便在出现问题时及时查看线程信息!

      jmx的输出信息,除了给我们实时监控用外,还可以借助一些第三方工具如grafana进行收集后进行持久化。可视化显示出现!(须借助 jmx_exportor, Prometheus 等工具)

      jmx 还可以做什么?

      对于线上应用的jvm调优,多半也是可以基于 jmx 做的~

    3. remote debug 如何?

      remote debug , 看起来有点高大上。至少我自己想来,这种实现方式应该是复杂的!

      个人觉得有两个难点:

        1. 如何连接到远程进程中debug,关键是远程是以 run 的形式进行的?

        2. 远程的代码如何与本地对应?

            我们在开发阶段,为什么很容易解决问题?其实,很多时候就是因为可以debug,可以直接跟踪到问题的根源。所以,你懂的,能debug就等于给了你无限的力量!

            断点几乎能解决所有的问题。

            但是,对于线上应用,你的断点则意味着应用失去响应,可能是事故级操作。所以,还是悠着点~

    4. remote debug 如何开启?

      同样,如果你觉得这对你还有点用,自然想看下如何开启了。两个步骤!

      1. 远程开启调试功能!

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8739

      2. ide 开户远程 debug!

     

      就ok 了!

          接下来,就是debug时间,支持任意断点,包括启动时的断点;

          另外,对于临时的代码改动,可以进行即时生效!

          需要注意的是,在远程debug时,控制台的输出将是向远程输出,而非向本地输出!

    老话:不要让一个bug从我们手中溜走!

  • 相关阅读:
    1-1 课程简介 & 2-1 IDEA与Eclipse的不同 & 2-3 Intellij IDEA安装
    MyBatis入门
    贪婪法——————贪心算法
    Java排序之直接选择排序
    是时候学一波STL了。。。
    Java提高篇(三一)-----Stack
    Android 经常使用工作命令mmm,mm,m,croot,cgrep,jgrep,resgrep,godir
    【POJ 2750】 Potted Flower(线段树套dp)
    POJ 题目3321 Apple Tree(线段树)
    Android新手入门2016(14)--FragmentTabHost实现选项卡和菜单
  • 原文地址:https://www.cnblogs.com/yougewe/p/10821973.html
Copyright © 2011-2022 走看看