java程序员应该知道的应用监测技术是什么

发布时间:2021-10-20 17:13:02 作者:柒染
来源:亿速云 阅读:202

这篇文章给大家介绍java程序员应该知道的应用监测技术是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1 引言:为什么需要监测java应用

java开发人员都知道,启动java应用使用的是java(class文件)或java -jar(jarwar包)命令。而java命令其实就是启动一个java虚拟机(JVM),程序就是运行在JVM上,JVM负责类加载,运行时区域堆栈分配等工作,而堆栈分别用于程序中的对象及线程使用,分别影响的系统的cpu及内存,如果程序涉及文件或数据读写,还会影响系统的IO。因此,一个java应用启动后,如果不对它所占用的资源情况进行监测,无疑于一架飞机起飞了,却没有仪表盘,这种飞机估计没有人敢坐。因此,作为开发人员,得清楚应用启动后的运行情况,并能够对应用运行状况进行监测,如此,才能及时预测有可能发生的问题进行及时修正或发生问题后可以更快,更好地找到原因所在,进而解决。可喜的是,程序本身,java工具和第三方工具,都为我们提供了很多监测java应用的方法,因此,作为java开发人员,有必要对它们做一个系统的了解,以便于在实际应用中(特别是在生产环境中)更从容,更有效率的处理问题。

2 监测什么

一个java应用运行起来,若出现问题,我们第一反应肯定是查看日志,查看一下具体是报什么错,若没有报错,只是运行很慢,或者只是暂时还没有报错,那我们需要监测什么内容呢?这一节,对比我们平时使用操作系统,来看看对于java应用,需要监测什么内容。

2.1 系统监测内容

对于我们平时使用的操作系统,如windowslinux系统,出现应用打开缓慢,系统响应缓慢,一般就是先查看系统的cpu运行和内存使用情况,找出占用资源高的进程,定位原因,在windows,直接在任务管理器-->性能中查看,如下图。

java程序员应该知道的应用监测技术是什么

linux,可以使用top,free,df,iostat等命令进行查看,如下图。

java程序员应该知道的应用监测技术是什么

在日常的运维过程中,也是对系统的磁盘使用、IO、CPU、内存、网络等情况进行监测,争取及时发现占用资源高的进程,定位问题然后处理。

2.2 java应用监测内容

相对于操作系统,java应用需要监测的内容也有类似的地方,如占用的cpu情况,内存情况,其中,会包含java应用的JVM参数,堆占用情况,线程运行状态,类加载情况,垃圾回收(GC)情况。至于为什么需要监测这些内容,就需要对java的虚拟机(JVM)有一定的了解,由于本文JVM涉及内容较多,后面有机会再对JVM进行详细讲解,这里可以对java的JVM体系作一个简要介绍,以便于读者对后面章节的理解。见下图:

java程序员应该知道的应用监测技术是什么

3 如何监测

经过上面的描述,我们大概已经知道一个java应用启动后,我们为什么需要监测java应用以及需要监测哪些东西。那落实到实际应用中,该如何进行监测呢?下面通过对java应用监测工具及方法进行一个概要介绍,后续将会以系列文章的形式,对各个监测工具及方法进行详细介绍。

按监测工具的监测方式,主要分为以下四大类:

3.1 程序内置监测

程序内置监测就比较简单,在初学java时,最常用的就是使用System.out.println()把自己想要输出的内容输出,在开发阶段也有人喜欢这样,一方面可以输出业务内容,监测功能的正常与否,另一方面可以输出系统属性System.getProperties()System.getProperty()。当然,现在更多的使用日志框架进行输出,并把日志按级别输出到文件中,如log4jlogback。对于Spring Boot应用,还可以使用actuator来监测程序运行情况。tomcat容器自身也带有监测页面。此类监测主要特点是程序内置,并且通过日志输出来监测,开发人员相对比较熟悉了,一般来说在开发和测试阶段比较常用,而生产环境下,日志一般是error级别或者由于安全考虑,自带的一些监测页面有可能会关闭。因此,此类监测不再细说。

3.2 java自带命令行监测工具

在jdk的安装目录下的的bin目录,已经提供了多种命令行监测工具,以便于开发人员和运维人员监测java应用,同时方便开发及运维人员对问题进行诊断,因此,此类工具是java应用监测的重要手段。一般来说,常用的命令行工具包括jps,jinfo,jmap,jstack,jstat,其中

通过这些工具,基本上可以了解java应用的内存变化状态,线程运行状态等信息,进而为应用监测及问题诊断提供依据。后面的文章将会对这些工具进行详细描述。

3.3 java自带可视化监测工具

除了命令行工具,在windows平台下,jdk还提供了可视化监测工具,以更直观,更方便的方式对java应用运行状况进行监测。这两款工具分别是jconsolejvisualvm,在jdk下的bin目录下可以找到。它们均可监测本地及远程的java应用,包括堆使用情况,线程使用,cpu使用,类加载情况,gc情况,jvisualvm还可以生成相应的堆和线程快照,同时还可以使用相应的插件,以便于进一步分析。后面的文章将会对这两款工具的使用进行详细描述。

3.4 第三方诊断工具

除了java自带的工具,一些第三方的工具也是监测及分析诊断,性能调优的利器,包括MATBTraceArthas。其中

关于java程序员应该知道的应用监测技术是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 初识Flink,你应该知道这些!
  2. 你应该知道的Windows复制技术

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:java命令的秘密是什么

下一篇:如何理解mybatis生成文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》