性能测试--线程的监控

news2025/3/16 6:39:30

1.线程的状态

1.1.线程的5种状态

java的线程总共有5种状态,如下:

  • * 新建:new 【新建之后不启用都是new】
  • * 运行:runnable
  • * 等待:waitting(无限期等待),timed waitting(限期等待)
  • * 阻塞:blocked
  • * 结束:terminated

1.2.线程不同状态的转换

        线程不同状态之间的转换如下所示:

2.java线程监控

2.1.通过Jvisualvm监控

        Jvisualvm是jdk自带的工具,如果想要用Jvisualvm进行监控tomcat需要在tomcat的bin目录下编辑catalina.sh文件在文件的第二行加入以下配置,如下图所示。

        编辑命令:

vi catalina.sh

        配置信息: 

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=你的ip"

        配置好了之后需要重启tomcat,然后在cmd控制台中输入:Jvisualvm,可以打开VisualVM页面,如下图所示。

         在VisualVM页面右击远程添加远程主机,然后添加jmx连接,在原连接后添加端口10086(在tomcat的catalina.sh文件中配置的端口),在没有问题的情况下可以添加成功,如下图所示。

        添加成功后打开连接,可以在监控页面看到对之前tomcat的监控数据报表,也可以切换到线程监控查看线程的运行情况,如下图所示。

 遇到问题:

1、无法连接

解决方法:开放10086端口,因为我的是云服务器,在安全组中进行配置即可。

2、添加JVM连接的时候系统提示“错误无法使用 service:jmx:rmi:///jndi/rmi://39.98.1**.***:10086/jmxrmi 连接到 39.98.1**.***:10086”,如下图所示。

        原因:tomcat在启动的时候还启动了其它几个端口,我们可以通过lsof命令进行查看,可以看到随机启动了一些监听端口,如下图所示。

lsof -i | grep 30342(我的tomcat的进程号)

         解决方法:将随机启动的端口在阿里云服务器安全组中进行开放,但是下次启动的时候不一定是这几个端口,另一种方法是将一个范围段的端口都在安全组中进行开放,如10086/65535,这个范围比较大不够安全,可以自行进行控制。

2.2.通过jstack工具来监控

        在linux中我们通过命令可以查看到tomcat当前的进程号,可以看到当前tomcat的进程号为30342,如下图所示。

ps -ef | grep tomcat

想要使用jstack可以通过命令:

#jstack <pid>
jstack 30342

         在实际使用过程中为了便于查看以及保证结果的准确性,我们可以将结果进行存储,并且存储多个文件,然后将文件下载到windows文件,通过手动搜索每个进程状态进行分析,单个文件检查完毕后可以到其它文件中检查看是否存在同样问题,然后得出结论。

jstack 30342>01.txt
jstack 30342>02.txt
jstack 30342>03.txt
jstack 30342>04.txt

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.存储部分

1.Flash Memory--闪速存储器&#xff08;注&#xff1a;U盘&#xff0c;SD卡就是闪存&#xff09;在EEPROM基础上发展而来的&#xff0c;断电后也能保存信息&#xff0c;且可进行多次 快速擦除重写。注意&#xff1a;由于闪存需要先擦除再写入&#xff0c;因此闪存写的速度要比…

[less配置]vue2引入less

1、终端输入&#xff1a;npm install less less-loader --save-dev 2、在package.json查看是否安装less依赖 3、调用

Add object from object library 从对象库中添加内置器件

Add object from object library 从对象库中添加内置器件 正文正文 对于 Lumerical,有些时候我们在使用中,可能需要从 Object library 中添加器件,通常我们的做法是手动添加。如下图所示,我们添加一个 Directional Coupler 到我们的工程文件中: 但是这种操作方式不够智能…

基于附带Attention机制的seq2seq模型架构实现英译法的案例

模型架构 先上图 我们这里选用GRU来实现该任务&#xff0c;因此上图的十个方框框都是GRU块&#xff0c;如第二张图&#xff0c;放第一张图主要是强调编码器的输出是作用在解码器每一次输入的观点&#xff0c;具体的详细流程图将在代码实现部分给出。 编码阶段 1. 准备工作…

Element Plus (面向外卖编程)

Element介绍 使用流程 案例 Element介绍 是饿了么团队基于 Vue 3 研发的面向设计师和开发者的组件库&#xff0c;访问官网能使用到各种组件样式 组件&#xff1a;组成网页的部件&#xff0c;例如 超链接、按钮、图片、表格、表单、分页条等等。官网&#xff1a;https://…

AI多模态「六边形战士」,原创音乐、1分钟百页PPT、抖音爆款……

2024年AI行业最大的看点是什么&#xff1f; 那一定是多模态AI应用。 大模型发展到今天这个阶段&#xff0c;文本处理已经是各家大模型的必备技能了&#xff0c;对音频、视觉等多模态的理解和应用才是下一个阶段大模型比拼的赛道。 3.5研究测试&#xff1a;hujiaoai.cn 4研究测…

测试驱动编程(3)进阶单元测试(下)

文章目录 测试驱动编程(3)进阶单元测试&#xff08;下&#xff09;示例实战接收同事的需求开始迭代需求故事迭代1故事迭代2故事迭代3故事迭代4故事迭代5故事迭代6 测试驱动编程(3)进阶单元测试&#xff08;下&#xff09; 示例实战 接收同事的需求 你的同事正在开发一个远程…

前端 防抖和节流

在前端开发中&#xff0c;防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;是两种常用的性能优化技术&#xff0c;尤其在处理频繁触发的事件时显得尤为重要。无论是在用户输入、窗口调整大小&#xff0c;还是滚动事件中&#xff0c;这两种技术都可…

el-transfer和el-tree进行结合搞一个树形穿梭框

由于业务需求需要在穿梭框里使用树形结构&#xff0c;但是本身element里并不支持&#xff0c;于是参考了别的大佬发的文章作为思路及后续自己新增了一些处理功能。 目录 1.拷贝代码放到自己的项目目录中 2.改造el-transfer的源码 3.修改tree-transfer-panel.vue文件 4.修改…

C语言内存函数超详细讲解

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 C语言内存函数超详细讲解 收录于专栏【C语言学习】 本专栏旨在分享学习C语言学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. m…

IDEA打开项目报错

IDEA打开项目报错&#xff1a; Cannot read scheme C:\Users\xxxxxx\AppData\Roaming\JetBrains\IntelliJIdea2023.2\qaplug_profiles\Default.xmljava.lang.AbstractMethodError: Receiver class com.soldevelo.qaplug.scanner.AnalysisProfileManager$2 does not define or i…

浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想

整合第三方技术 不要单单学习指定技术与springboot整合的方式 学习目标的是整合整体的技术的思路 拿到任何一个第三方技术后我们在springboot中如何操作 这是真正我们应该学习的东西 以后能整合任意技术 整合JUnit JUnit 是一个流行的开源测试框架&#xff0c;用于 Java …

frp搭建内网流量转发

前提条件 有一台外网服务器 背景介绍 外网服务器linux内网客户端Windows 10下载frp软件安装包 下载地址:https://github.com/fatedier/frp/releases 服务端软件包下载 客户端软件包下载 服务端部署 解压软件包 tar xzvf frp_0.58.0_linux_amd64.tar.gz修复加压后文件夹名…

解决远程链接的“Gtk-WARNING **: cannot open display;

1.需要检查ssh配置中X11Forwarding是否启用 2.检查本地ssh工具是否启用x11转发&#xff08;下图以mobaxterm为例&#xff09; 3.检查是否有防火墙等其他网络拦截&#xff0c;如果没有特殊需求&#xff0c;这里可以直接将防火墙服务关闭 4.按上诉操作检查后&#xff0c;正常情况…

力扣周赛398题解

特殊数组Ⅰ 如果数组的每一对相邻元素都是两个奇偶性不同的数字&#xff0c;则该数组被认为是一个 特殊数组 。 Aging 有一个整数数组 nums。如果 nums 是一个 特殊数组 &#xff0c;返回 true&#xff0c;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;nums [1] …

工业路由器在工厂数字化的应用及价值

随着科技的飞速发展&#xff0c;数字化转型已成为工厂提高效率、降低成本、实现智能化管理的关键途径。在这个过程中&#xff0c;工业路由器凭借其独特的优势&#xff0c;正逐渐成为工厂数字化建设不可或缺的核心组件。本文将深入探讨工业路由器在工厂数字化中的应用及价值&…

Nuxt3 实战 (七):配置 Supabase 数据库

前言 这个章节我们要先把数据库的环境配置好&#xff0c;古人云&#xff1a;工欲善其事&#xff0c;必先利其器。 这两天我一直在网上寻找最适合 Nuxt 的数据库&#xff0c;之前在做个人项目时经常用的是 Mysql 和 MongoDB&#xff0c;也用过 ORM 框架比如&#xff1a;Sequel…

深入理解循环控制语句 - for

循环就是重复的意思&#xff0c;它是编程中的基石&#xff0c;它使程序能够重复执行某段代码&#xff0c;直至满足特定条件为止。 在Java中&#xff0c;for循环是一种常用的循环结构&#xff0c;它以紧凑的形式实现了迭代过程。 一、for循环基础 1.1 for循环简介 for循环在…

C++容器之无序多集(std::unordered_multiset)

目录 1 概述2 使用实例3 接口使用3.1 construct3.2 assigns3.3 iterators3.4 capacity3.5 find3.6 count3.7 equal_range3.8 emplace3.9 emplace_hint3.10 insert3.11 erase3.12 clear3.13 swap3.14 bucket_count3.15 max_bucket_count3.16 bucket_size3.17 bucket3.18 load_fa…

00.OpenLayers快速开始

00OpenLayers快速开始 官方文档&#xff1a; 快速开始&#xff1a;https://openlayers.org/doc/quickstart.html 需要node环境 一、设置新项目 npm create ol-app my-app cd my-app npm start第一个命令将创建一个名为 my-app​ 的目录&#xff08;如果您愿意&#xff0c;…