42

远程调试与监控 --jmx & remote debug

 4 years ago
source link: http://www.cnblogs.com/yougewe/p/10821973.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

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

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

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

1. jmx 怎么样 ?

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

简单来说就是,通过jmx,你可以直接观察到jmx管理的东西,从而达到实时监控的效果!

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

Iri26bi.png!web

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

2. jmx 如何开启?

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

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

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

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

EbIJZjA.png!web

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

3. remote debug 如何?

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

个人觉得有两个难点:

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

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

4. remote debug 如何开启?

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

1. 远程开启调试功能!

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

2. ide 开户远程 debug!

NVbQv2R.png!web

就ok 了!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK