性能测试 —— Tomcat监控与调优:Jconsole监控

JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(Java VM),提供在Java平台上运行的应用程序的性能和资源消耗的信息。在Java平台,标准版(Java SE平台)6,JConsole的已经更新到目前的外观,类似于Windows和GNOME桌面(其他平台,将目前标准的Java图形的外观和感觉),在这个文件中提出的屏幕截图是从Windows XP上运行的接口的一个实例。

Jconsole是一个可执行文件,在Java根目录下有一个bin文件,该文件下可以找到jconsole文件,单击可直接运行该程序,如果将该jconsole的路径设置为环境变量,那么可以直接在开始菜单运行命令中直接键jconsole命令,来运行jconsole程序,如果未设置为环境变量,那么则需要写全路径。

启动JConsole程序的方式有两种:一种是带参数的启动;另外一种是不带参数启动。

带参数启动JConsole启动时,又分有两种情况:一种是监控本地进和;另一种是远程监控;

本地监控的命令格式如下:

JConsole processID

processID是指应用程序的进程ID(PID),可以使用以下方式确定一个应用程序的PID:

● 在UNIX或Linux系统,可以使用 ps命令找到正在运行的Java实例的PID;

● 在Windows系统上,可以使用任务管理器,找到java或者javaw进程的PID;

例如:如果监控JConsole程序,JConsole的进程号为5604,那么可以用下面的命令启动JConsole:

JConsole 5604

远程监控的命令格式如下:

JConsole 主机名:portNum

主机名是需要监听的主机,portNum是启动Java虚拟机时指定的JMX代理的端口号。

注意:使用JConsole监视本地应用程序在开发和创建原型是非常有用的,但不推荐用于生产环境,因为Jconsole本身也消耗大量的系统资源。

执行Jconsole程序时,不带任何参数命令,会弹出Jconsole新建链接对话框,如图10-6所示。

图10-6 Jconsole新建连接

Jconsole有两种监控方式:本地进程监控和远程监控。

●选择本地进程监控,在下面的列表框中会列出与JConsole程序相同用户的进程,选择其中一个进程,单击连接按钮,即可以进行监控的主界面。

●选择远程监控,需要的内容包括。主机名和JMX代理的端口号,以及访问服务器的用户名和密码。

当连接成功后,会弹出监控界面,如图10-7所示。

图10-7 监控主界面

监控的内容主要包括六个方面的内容:概述、内存、线程、类、VM摘要和MBean

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

概要信息

概要信息监控界面主要包括堆内存使用情况、线程数、Java VM中加载类和CPU使用情况。选中各视图可以切换监控的时间片段,同时也可以将视图中的数据保存在一个逗号分隔(CSV)文件中。

内存信息

内存监控信息主要提供了内存消耗和内存池的信息,如图10-8所示。

图10-8 内存监控信息

内存监控信息主要监控了两类内存消耗的信息:堆和非堆内存,这两种内存也是Java虚拟机管理的两种内存,这两者都是Java虚拟机启动时创建的。

● 堆内存是运行时数据区域,Java VM的所有类实例和数组分配内存,可能是固定或可变大小的堆。

● 非堆内存包括在所有线程和Java虚拟机内部处理或优化所需的共享的方法。它存储了类的结构、运行常量池、字段和方法数据,以及方法和构造函数的代码,方法区在逻辑上是堆的一部分,看具体实现的方式。根据实现方式的不同,Java虚拟机可能不进行垃圾收集或压缩。与堆内存一样,方法区域可能是一个固定或可变大小,方法区的内存不需要是连续的。

除了方法区,Java虚拟机可能需要进行内部处理或优化,这也属于非堆内存的内存。例如,实时(JIT)编译器需要内存用于存储从Java虚拟机的高性能的代码翻译的机器码。

Jconsole提供的监控的堆和非堆的内存主要包括以下几类:

Eden Space内存池:大多数对象初始化时分配的内存池;

Survivor Space内存池:这个内存池包含的对象是回收Eden Space内存池后所幸存的对象;

Tenured Gen内存池:这个内存池包含的对象是在Survivor Space内存池中已经存在一段时间的对象;

Code Cache内存池:包括HotSpot Java VM的代码缓存和编译、存储代码所消耗的内存;

Perm Gen[shared-rw]内存池:Perm Gen内存池中读写的区域;

Perm Gen[shared-ro]内存池:Perm Gen内存池中只读的区域;

Perm Gen内存池:该内存池包括虚拟机本身反射的数据,如类和方法,Java虚拟机在运行时会共享这些类数据区域,共享的区域有只读和读写两种方式。

在图表下拉列表框中可以选择不同内存池进行监控,并获得当前内存池所消耗的内存信息,此外右下角显示了堆和非堆的图标,切换显示的图表,内存池图表显示的内容也随着切换,如果显示为红色,那说明使用的内存超过内存的阀值。

内存池和内存管理器是Java虚拟机的内存系统的关键环节。

一个内存池表示Java虚拟机管理的内存区域。Java虚拟机至少有一个内存池,它可能在执行过程中创建或删除内存池,一个内存池可以属于堆或非堆内存。

一个内存管理器管理一个或多个内存池,垃圾收集器是一个负责回收不可达的对象使用内存的内存管理器,Java虚拟机可能有一个或更多的内存管理器,在执行过程中,它可以添加或删除内存管理器,一个内存池可以由一个以上的内存管理器进行管理。

“详细信息”框中显示了内存使用的详细信息,主要包括以下信息:

●已使用:当前使用的内存数,包括已经使用的、可获得或未获得的内存;

●分配:分配的内存必须保证Java虚拟机所需要的使用量,提交的内存可能会随时间的改变而改变,Java虚拟机可能会释放系统内存,分配的内存可能会少于最初启动时分配的内存量,分配的内存大于或等于需要使用的内存量。

●最大值:内存管理中可用的最大内存,该值是变化的或不确定的,如果Java虚拟机使用的内存在不断的增长并且大于所分配的内存量,那么分配内存将失败。

●GC时间:累积垃圾收集的时间和总调用的时间,它可能包含多行,其中每行代表一个垃圾收集器算法在Java虚拟机中所消耗的时间。

垃圾收集(GC Garbage Collect)是Java虚拟机如何释放不再被引用的对象所占用的内存的机制,它通常认为的对象,有当前活动的“活着”的对象和无法引用或不获得“死”对象,垃圾收集是由释放“死”对象所占用内存的过程,垃圾收集的算法和参数对性能有很大的影响。

Java HotSpot虚拟机的垃圾收集器使用代GC,代GC的优势大多数都符合以下的概括:

它们创建一些短暂一生的对象,如迭代和局部变量;
它们创建一些长生命的对象,如高层次的持久对象;

代GC分为几代,并给每个指定一个或多个内存池,当一代使用了分配的内存,虚拟机上执行一个局部的GC(也叫minor collection),内存池回收死对象使用的内存,这部分的GC速度通常远远优于一个完整的GC。

Java HotSpot虚拟机定义了两代:年轻代(有时也被称为“托儿所”)和年老代,年轻代包括一个“Eden space”和两个“survivor spaces”,最初,VM将所有的对象在“Eden space”内存池中,并且大多数对象“死”在那里,当它执行了一次局部GC(minor GC),VM将剩余的对象从“Eden space”转移到“survivor spaces”,虚拟长生存时间的对象移动到年老代的“tenured”空间,当年老代填满了,将是一个完整的GC,一个完整的GC往往会很慢,因为它涉及到所有存活的对象,永久代包含虚拟机所有本身数据的反射,如类和方法。

如果垃圾收集器出现瓶颈,那么可以通过自定义代大小来提高性能。

线程信息

线程的监控信息如图10-9所示

图10-9 线程监控信息

在左下角“线程”列表中显示了所有活动的线程,如果需要查找指定的线程,可以在“过滤器”字段中输入待查找的线程,选中某个线程,右边文本框即会显示出当前线程的名称、状态和堆栈跟踪信息。

上面的线程数目视图中动态的显示当前活动线程数,主要包括两部分内容:当前活动线程数和峰值线程数。

线程监控视图中还提供了一个检测死锁线程的功能,单击【检测到死锁】按钮,如果存在任何线程对象监视器出现死锁情况,则会显示出该死锁线程的ID号,并且会显示出当前线程的相关信息。

在MBean选项卡中可以监视Java虚拟机线程信息的所有属性和操作。

类信息

类的监控信息如图10-10所示

图10-10 类监控信息

已装入类的数目视图中显示了已装入类的总数和当前加载的类,其实红色表示已装入类的总数,蓝线当前加载的类。详细信息中显示了当前已装入的类、已装入类的总数和已卸载类的总数。

VM摘要信息

VM摘要的监控信息如图10-11所示

图10-11 VM摘要信息

在VM摘要信息中主要包括五方面的信息:摘要信息、线程和类信息、内存信息、操作系统信息和其它信息

摘要部分的信息主要包括以下信息:

连接名称:连接监控时的进程PID信息;
运行时间:开始以来Java虚拟机运行的时间总额;
处理CPU时间:Java VM的开始,消耗的CPU时间总量;
编译总时间:累计时间花费在JIT编译所花费的时间;

线程和类信息主要包括以下信息:

活动线程:当前活动的线程;
峰值:最大线程数;
守护线程:即运行在后台的线程;
已启动的线程总数:运行到目前为止共启动的线程数;
当前类已装入:当前正在运行过程中已装载类的总数;
已装入类的总数:运行到目前为止所装载类的总数;
已卸载类的总数:运行到目前为止已卸载类的总数;

内存信息主要包括以下信息:

当前堆大小:当前堆分配的内存空间;
分配的内存:当前已分配的内存大小;
堆大小的最大值:堆分配内存的最大值;
暂挂结束操作:当前暂时挂起结束的对象;
垃圾收集器:垃圾收集器描述了收集器的名称、收集器收集的内存数量和收集这些内存所消费的时间;

操作系统信息主要包括操作系统名、体系结构、分配的虚拟内存、物理内存总量、可用物理内存、交换空间总量和可用交换空间。

其它信息主要包括以下信息:

VM参数:显示通过应用程序传送给Java虚拟机的参数,这些参数不包括的主要方法的参数;
类路径:由系统类加载器用于搜索类文件的类路径;
库路径:加载库时要搜索的路径列表;
引导类路径:引导类加载器搜索类文件的路径列表;

MBean信息

MBeans选项卡显示MBean服务器所注册的MBeans的类,MBeans选项卡允许访问平台MXBean服务器,此外,还可以监控和管理应用程序的MBean,MBean信息如图10-12所示。

图10-12 MBean信息

左侧显示了当前所以运行的MBean,当选中MBean树中某个MBean时,右侧会显示当前被选中MBean的MBeanInfo和描述符信息,在下面会显示当前MBean的相关属性、操作和通知信息。

MBean属性

在MBean树中选择一个MBean,单击“属性”节点,将显示MBean的所有属性,以Memory为例,如图10-13所示

图10-13 Memory属性

选中属性下面的单个属性,在右侧会显示出当前属性的详细信息,如图10-14所示。

图10-14 属性的详细信息

单击属性值(即右侧黑体字),可以展开详细的属性值信息, HeapMemoryUsage属性展开后的值,如图10-15所示

图10-15 HeapMemoryUsage详细信息

双击属性值,可以对这些显示的值进行修改,有的属性是以图表的方式显示,如图10-16显示的是Threading中的CurrentThreadUserTime属性值。

图10-16 图表方式显示属性值

Mbean操作

在MBean树中选择一个MBean,单击“操作”节点,将显示MBean的所有相关操作,以Threading为例,如图10-17所示

图10-17 Threading操作

单击操作调用中的按钮,可以调用这些方法,单击某种方法可以显示当前方法的详细信息,如图10-18所示

图10-18 方法的详细信息

Mbean通知

在MBean树中选择一个MBean,单击“通知”节点,选择某个通知,右侧将显示该通知的详细信息,以Memory为例,如图10-19所示

图10-19 通知详细信息

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/140899.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端新轮子Nue,号称替代Vue、React和Svelte

新的简约前端开发工具集Nue.js 于周三发布。在 Hacker News 上介绍它时,前端开发者和Nue.js 的创作者Tero Piirainen表示,它是 React、Vue、Next.js、Vite、Svelte 和 Astro 的替代品。他在 Nue.js的 FAQ 中进一步解释说,它是为网站和响应式用…

力扣刷题-链表-两两交换链表中的节点

24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 解题思路 采用正常模拟的方法。 建议使用虚拟头结点,这样会方便很多&am…

【python爬虫】爬虫所需要的爬虫代理ip是什么?

目录 前言 一、什么是爬虫代理 IP 二、代理 IP 的分类 1.透明代理 2.匿名代理 3.高匿代理 三、如何获取代理 IP 1.免费代理网站 2.付费代理服务 四、如何使用代理 IP 1.使用 requests 库 2.使用 scrapy 库 五、代理 IP 的注意事项 1.代理 IP 可能存在不稳定性 2…

R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据...

全文链接:http://tecdat.cn/?p23785 最近,我们使用贝叶斯非参数(BNP)混合模型进行马尔科夫链蒙特卡洛(MCMC)推断(点击文末“阅读原文”获取完整代码数据)。 概述 相关视频 在这篇文…

坐标休斯顿,TDengine 受邀参与第九届石油天然气数字化大会

美国中部时间 9 月 14 日至 15 日,第九届石油天然气数字化大会在美国德克萨斯州-休斯顿-希尔顿美洲酒店举办。本次大会汇聚了数百名全球石油天然气技术高管及众多极具创新性的数据技术方案商,组织了上百场硬核演讲,技术专家与行业从业者共聚一…

12:STM32---RTC实时时钟

目录 一:时间相关 1:Unix时间戳 2: UTC/GMT 3:时间戳转化 二:BKP 1:简历 2:基本结构 三: RTC 1:简历 2: 框图 3:RTC基本结构 4:RTC操作注意 四:案例 A:读写备份寄存器 1:连接图 2: 步骤 3: 代码 B:实时时钟 1:连接图 2:函数介绍 3:代码 一:时间相关 1:Un…

虹科教您 | 可实现带宽计量和延迟计算的时间敏感网络测试工具RELY-TSN-LAB操作指南与基本功能测试

1. RELY-TSN-LAB产品概述 时间敏感网络(TSN)能够合并OT和IT世界,这将是真正确保互操作性和标准化的创新性技术。这项技术的有效开发将显著降低设备成本、维护、先进分析服务的无缝集成以及减少对单个供应商的依赖。为了在这些网络中实现确定性,需要控制…

如何取消显示Notepad++每行显示的CRLF符号

新电脑中重新安装了Nodepad,打开记事本后发现出现了许多黑底的CR|LF标记,特别碍眼。 如何取消呢? 视图 -> 显示符号 -> 取消勾选 显示行尾符操作步骤 预期效果

虹科案例 | LIN/CAN总线汽车零部件测试方案

文章来源:虹科汽车电子 点此阅读原文 虹科的LIN/CAN总线汽车零部件测试方案是一款优秀的集成套装,基于Baby-LIN系列产品,帮助客户高效完成在测试、生产阶段车辆零部件质量、功能、控制等方面的检测工作。 1、汽车零部件测试的重要性&#xf…

linux 防火墙iptables

iptables 是 Linux 中比较底层的网络服务,它控制了 Linux 系统中的网络操作,CentOS 中的 firewalld 和 Ubuntu 中的 ufw 都是在 iptables 之上构建的,只为了简化 iptables 的操作。同时,iptables 不仅仅是防火墙这么简单&#xff…

GO语言从入门到实战-Go语言简介:历史背景、发展现状及语言特性

一、简述Go语言背景和发展 1. 软件开发的新挑战 多核硬件架构超大规模分布式计算集群Web 模式导致的前所未有的开发规模和更新速度 2. Go的三位创始人 Rob Pike Unix 的早期开发者 UTF-8 创始人 Ken Thompson Unix 的创始人 C语言创始人 …

从零学习开发一个RISC-V操作系统(二)丨GCC编译器和ELF格式

本篇文章的内容 一、GCC(GUN Compiler Collection)1.1 GCC的命令格式1.2 GCC的主要执行步骤1.3 GCC涉及的文件类型 二、ELF简介2.1 ELF文件格式图2.2 ELF文件处理的相关工具2.3 练习 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记&…

【动手学深度学习-Pytorch版】门控循环单元GRU

关于GRU的笔记 支持隐状态的门控:这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。 这些机制是可学习的,并且能够解决了上面列出的问题。 例如,如果第一个词元非常重要, 模型将学会在第一…

Docker文档阅读笔记-How to Commit Changes to a Docker Image with Examples

介绍 在工作中使用Docker镜像和容器,用得最多的就是如何提交修改过的Docker镜像。当提交修改后,就会在原有的镜像上创建一个新的镜像。 本博文说明如何提交一个新的Docker镜像。 前提 ①有一个可以直接访问服务器的运行终端; ②帐号需要r…

云计算安全:保护数字资产的前沿策略

文章目录 1. 云计算安全威胁1.1 数据泄露1.2 身份认证问题1.3 无法预测的网络攻击1.4 集中攻击 2. 云计算安全最佳实践2.1 身份和访问管理(IAM)2.2 数据加密2.3 安全审计和监控2.4 多重身份验证(MFA) 3. 安全自动化3.1 基础设施即…

springboot 获取参数

1.获取简单参数 2.实体对象参数

#倍增 #国旗计划

文章目录 题目&#xff1a;题解代码 题目&#xff1a; 国旗计划 题解 三个技巧&#xff1a; 断环成链&#xff1a; 具体而言就是&#xff1a; if(w[i].R < w[i].L) w[i].R m; m是环的长度&#xff1b; 贪心&#xff1a; 选择一个区间i后&#xff0c;下一个区间只能从左端…

第15篇ESP32 idf框架 wifi联网_WiFi AP模式_手机连接到esp32开发板

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播…

电子电气架构——无感刷写(Vector)协议栈方案介绍

电子电气架构——无感刷写(Vector)协议栈方案介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 对学习而言,学习之后的思考、思考之后的行动、行动之后的改变更重要,如果不盯住内层的改变量…

BIOMOD2模型、MaxEnt模型物种分布模拟,生物多样性生境模拟,论文写作

①基于R语言BIOMOD2模型的物种分布模拟实践技术应用 针对我国目前已有自然保护区普遍存在保护目标不明确、保护成效低下和保护空缺依然存在等问题&#xff0c;科学的鉴定生物多样性热点保护区域与保护空缺显得刻不容缓。 BIOMOD2提供运行多达10余种物种分布模拟模型&#xff0c…