JAVA 性能监控(jvisualvm)及测试(JMeter)

基本理论

除了本身要掌握JAVA API的基本使用外,我们还需要对JAVA的所写项目以及测试方法要有所了解,首先我们得理解什么是响应时间,请求时间,HPS,TPS以及QPS等。

  • 响应时间是指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结果,整个过程所耗费的时间。
  • 请求时间是客户端发送请求到服务端接收到请求的时间。
  • HPS(Hits Per Second) 每秒点击次数,单位是 次/秒
  • TPS(Hits Per Second) 系统每秒处理交易数(事务数,接口逻辑数),单位是笔/秒
  • QPS(Query Per Second) 系统每秒处理查询次数,单位是 次/秒。
  • 最大、最少响应时间
    指用户发出请求或者指令到系统做出反应(响应)的最大、最少时间。
  • 90%响应时间
    指100个人,有90个人1s内得到系统的反馈,就代表优化到一定的程度,还有10%相对优化复杂度就很高了。

对于互联网业务中,如果某些业务有且仅有一个请求链接,那么TPS=QPS=HPS,一盘情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单击请求。
无论TPS,QPS,HPS,这些指标都是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:

  1. 金融行业 1K TPS~50K TPS
  2. 保险行业 100 TPS~10W TPS
  3. 制造行业 10 TPS~5K TPS
  4. 互联网电子商务 1W TPS~100W TPS
  5. 互联网中型网站 1K TPS~5W TPS
  6. 互联网小型网站 500 TPS~1W TPS

对于系统来说有三个重要的指标是我们一定要看的

  • 吞吐量:每秒系统能够处理的请求数,任务数
  • 响应时间:服务处理一个请求或一个任务的耗时
  • 错误率:一批请求中结果出错的请求所占比例

JMeter使用

JMeter下载

地址

以下所有的请求时间都为 ms,除非标有时间单位。

转换中文

创建线程组

线程数:模拟并发用户数量
Ramp-Up时间(秒):在设置的时间结束之前,启动所有线程数
循环次数:单个线程执行几次

添加http请求

添加结果树

会把所有请求的信息列出来。

添加汇总报告

聚合报告

汇总图

Jmeter Address Already in use

windows 本身提供的端口机制问题。
windows 提供给我们 TCP/IP 的端口为1024-5000,并且要4分钟来循环回收他们,就导致我们在短时间内跑大量的请求时将端口沾满。
解决方式:

  1. cmd中输入 regedit 命令打开注册表
  2. 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters ,右击Parameters ,添加一个新的 DWORD,名字为 MaxUserPort,双击 MaxUserPort ,输入数值数据为 65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机制都需要这样操作),修改完毕后重启电脑才能生效。相同的位置还可以添加 TCPTimedWaitDelay 值为 30,和 MaxUserPort 添加方式一样。

jvisualvm

启动jvisualvm

jvisualvm 在jdk包中已经有了,只需要打开 cmd 输入 jvisualvm 就能启动

在高版本JDK(大于1.8或后期更新的1.8版本)中已经不会再自动集成 VisualVM,https://visualvm.github.io/index.html 到这里进行下载

下载的 visualvm 默认会找环境中的 jdk1.8,但如果你不是 jdk1.8 则可以修改配置(visualvm_218/etc/visualvm.conf),修改内容如下:

# 设置成自己安装的java路径
visualvm_jdkhome="D:\tool\java\java17"

线程

运行:正常运行
休眠:sleep中的线程
等待:wait 中的线程
驻留:线程池里得空闲线程
监视:正在阻塞的线程,等待锁的。

安装插件

安装插件前先检查更新,如果出错了需要更新地址,先 工具-插件-更新-检查更新 来检测是否有错,如果有错,先查看jdk版本,然后去 https://visualvm.github.io/pluginscenters.html,找到相同版本的 gz url,再到 插件-设置-编辑,更新 url即可。

visual GC 通过它可以看到整个垃圾回收的过程。安装完成后,退出重进。

GC time:14 collections,798.209ms Last Cause :System.gc() = 发生了 14 次GC,花了798.209ms。
Eden Space(666.000M,292.500M):148.296M,11 collections,223.272ms = 发生了11次GC,花了223.272ms

Histogram 直方图

直方图只在使用 G1 垃圾回收器才会出现

  • Tenuring Threshold=15:这表示对象在晋升到老年代之前需要在年轻代中经历的最少垃圾收集次数。如果一个对象在年轻代中生存超过15次垃圾收集循环,那么它将被转移到老年代。
  • Max Tenuring Threshold=15:这是tenuring阈值允许的最大值。在你的例子中,Tenuring Threshold和Max Tenuring Threshold都设置为15,这意味着这是JVM允许的最长时间,对象在年轻代中可以逗留而不被晋升到老年代。这限制了年轻代对象的年龄上限,简化了晋升决策。
  • Desired Survivor size=268435456:这是G1垃圾收集器期望的每个Survivor空间的理想大小。理想情况下,Survivor空间的容量会被设为这个值,以容纳从Eden区或另一个Survivor区存活下来的对象。这个设置有助于优化年轻代的内存分配和回收效率。
  • Current survivor size=8:这表示当前某个Survivor空间的实际大小,单位是字节。给出的例子中,显示的8字节看起来异常小,几乎肯定是一个显示错误或者误解,因为这样的大小远远不足以满足正常的对象存储需求。正常情况下,这个值应该接近或等于Desired Survivor Size。可能是由于在VisualVM捕获那一刻状态时,Survivor空间正在进行调整,或者存在某种报告上的偏差,需要进一步检查和确认。

从0到15。每一格的颜色代表了处于该年龄级别的对象数量。例如,第一列(年龄级别0)有一个橙色的格子,表示有一些对象刚刚进入年轻代,它们的年龄为0。第二列(年龄级别1)有两个橙色格子,说明有两组对象已经经历了第一次垃圾收集,现在它们的年龄为1。

请注意,这个直方图并不反映实际的数量,而是通过颜色块来表示相对数量。因此,两个橙色格子并不一定表示确切的两个对象,而只是表明有多个对象处于这个年龄级别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 性能与压力测试 @[toc] 一、性能监控 1、jvm内存模型 程序计数器 Program Counter Reg...
    runewbie阅读 701评论 0 1
  • 性能指标分类 在进行性能测试的指标监控和结果分析时,可以关注以下这几个维度的指标: 系统性能指标 资源性能指标 数...
    猪儿打滚阅读 2,598评论 0 6
  • 一、性能指标 1、响应时间(Response Time:RT) 响应时间指用户从客户端发起一个请求开始,到客户端接...
    紫荆秋雪_文阅读 351评论 0 0
  • 作者:Gakki 基础概念:HPS、TPS、QPS、RPS、RT、并发用户数概念?简要介绍? HPS(Hits P...
    Gakki0725阅读 835评论 0 1
  • 1,基础概念:HPS、TPS、QPS、RPS、RT、并发用户数概念?简要介绍? HPS(Hits Per Seco...
    笑起来真好看ccn阅读 1,072评论 0 1