学习一下压测和监控

news/2025/11/3 13:32:26/文章来源:https://www.cnblogs.com/jackjavacpp/p/19186784

初步学习压测和监控

本文示例代码以及数据库sql文件见:gitee

https://gitee.com/quercus-sp204/new-technology/tree/master/all-component-monitor

1.环境说明

  • 首先是开发环境:jdk是21,然后maven是3.9.6,idea是2024
  • 然后是数据库MySQL,版本是8.0.44;Redis版本是7.4.6
  • 最后是监控方面,Prometheus3.7.2 + grafana12.2.0 + 各个中间件的exporter
  • linux是Ubuntu22.04.5 LTS,配置是4c8g【所有中间件mysql,redis,Prometheus,grafana,exporter均是安装在这上面的】

然后说一下监控三件套的关系

  • Exporter:数据采集器负责从监控目标(服务器、数据库、应用等)抓取指标数据,将其标准化为 Prometheus 能识别的格式。无需主动推送数据,等待Prometheus 定期拉取即可。
  • Prometheus:核心监控引擎定时从 Exporter 拉取数据并存储,支持按时间序列查询、设置告警规则,是整个体系的 “数据中枢”。本身可视化能力较弱,需依赖 Grafana 呈现。
  • Grafana:可视化面板工具作为独立的可视化平台,通过连接 Prometheus(或其他数据源),将原始监控数据转换成直观的图表、仪表盘。支持自定义面板样式,满足不同场景的监控展示需求。

此案例中需要监控linux 和 redis,所以就需要在服务器上部署node exporter 和 redis exporter了。

环境部署的话,就由读者自行完成了,网上很多教程,本文就不赘述了。

这个是本文配置的两个面板。

2.测试情况

本文就以RedisSeckillController下面的接口测试为例子,/redisSeckill/submitSeckill

模拟的一个简单的秒杀抢购功能。

首先准备jmeter的测试,【线程准备了4000个】由于秒杀接口需要用户登陆过才能抢购,故会有一个拦截器,所以我们的jmeter需要做一点小改动,

我将用户的token生成在了这个csv文件中,可以访问UserManagerController里面的接口来自动生成。感兴趣的同学可以看一下。然后http信息头管理里面添加一些内容,

这样我们的http请求就可以有token了。到此,准备工作做好了。

现在我们模拟添加一个秒杀活动。【在SeckillManagerController中可以看到】,这里给大家一个示例json

{"activityName": "华子的秒杀大促","startTime": "2025-11-01 00:00:00","endTime": "2025-11-10 00:00:00","status": 1,"goods": [{"id": 1,"goodsName": "华为mate80 pro","originalPrice": 8000,"seckillPrice": 1000,"stock": 100,"limitPerUser": 1,"status": 1}]
}

访问对应的接口,就可以添加秒杀活动了。添加完成之后可以看到如下图所示:

apifox访问接口:

数据库里面:【相应的表数据已经生成好了】

Redis里面数据也生成了:【set里面是弄限购的,如果已经买过了就不能再买了,hash是存库存的】

数据准备好了,接下来就是准备测试了。

然后就可以启动了。数据库生成的数据没有问题,然后redis数据也是完整的。

然后可以看到相关报告:【可以重点关注一下以下指标】

异常 % 为 0.00%,4000 次请求全部成功,系统在高并发下稳定性极佳

平均值 119ms,中位数 18ms,说明大部分请求响应极快;90% 分位 516ms、95% 分位 520ms、99% 分位 876ms(90%的请求都在516毫秒以下,99%的请求都在876毫秒以下)。

吞吐量1987.1/sec,每秒处理近 2000 次请求,高并发处理能力较强

接收 / 发送带宽分别为 464.95KB/sec、554.93KB/sec,若服务器带宽充足,网络未成为瓶颈


再查看一下Prometheus + grafana的监控指标呢:

这个是redis的

流入流量在 11:50 左右出现峰值(42.3 KiB/s),流出流量稳定在 4.32 KiB/s 以内。说明这一时刻开始测试的

每秒命中数峰值 533,未命中数始终为 0,命中率 100%;

连接数稳定在 5 左右,无阻塞(blocked)客户端。连接池配置合理,无连接积压或拒绝问题;

命令执行平均耗时集中在 50–200 μs,命令执行整体高效,无明显慢命令拖垮性能


这个是linux的网络情况:

已分配 Socket(Allocated Sockets):在 11:55 左右从约 50 跃升至 135,增长显著。说明有突发的 TCP 连接创建操作

3.end

总的来说,还可以继续往上压测,找到服务器的极限,还可以考虑持续压测,看看稳定性如何。

本文仅作简单示例,这个案例代码其实有很多需要完善的,比如一些容错的设计,用户超时取消订单等操作。

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

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

相关文章

2025年11月办公家具公司推荐榜单:权威评测与综合对比分析

随着企业办公环境升级需求日益增长,选择一家可靠的办公家具公司成为许多企业管理者关注的重点。无论是初创团队寻求高性价比方案,还是成熟企业需要定制化高端配置,办公家具采购都关系到员工工作效率、企业形象展示和…

Spring IOC 容器和依赖注入(DI)

1、什么是 IOC? IOC(Inversion of Control)控制反转,IOC的核心是将对象的创建和依赖关系的组装控制权从程序内部反转到外部容器。容器管理的是Bean的生命周期和依赖关系,而“对象之间的调用过程”通常是由业务逻辑…

CSP-S 2025 赛时总结

T1 花了约 40min,小失误。 看到题目第一眼没有想到贪心,是 dp。 好在最后想到了反悔贪心,及时止损。 T2 2h......,超级失误。 首先想了好久才想到可以先做一次 Kr 将 \(m\) 去掉。 然后想到很久没有前途的直接枚举…

MATLAB2025b安装教程

MATLAB是一款高级技术计算语言、交互式算法开发环境和现代数据分析工具,作为数学类科技应用软件中首屈一指的软件,非常适合用于机器学习、信号处理、控制设计、图像处理、通信、计算机视觉、计算金融以及机器人技术等…

2025年11月领先品牌认证机构排行榜:权威评测与选择指南

在当今竞争激烈的市场环境中,企业越来越需要通过权威认证来证明自身的市场地位和品牌价值。作为企业决策者,您可能正在寻找一家可靠的领先品牌认证机构,以提升品牌公信力、增强市场竞争力。这种需求通常出现在企业准…

leaflow部署openlist

很久之前就想写这个教程,但怕过于简单,但是看见群内有佬友部署openlist遇到权限的问题,所以写下了这个话题。 按着图片操作即可,选择完全模式,主要看init容器部分。 cpu和内存我分配的比较少,主打一个省钱。 如下…

2025年11月上海婚姻律师服务评测:行业标准与用户反馈全解析

在上海这座国际化大都市中,婚姻家庭关系的稳定对社会和谐具有重要意义。根据最新发布的婚姻家事法律服务行业白皮书显示,随着社会结构变化和民众法律意识提升,上海地区婚姻家事案件年增长率持续保持在10%以上。选择…

Comparable接口

1. Comparable接口概述 1.1 基本概念包位置: java.lang.Comparable 功能: 定义对象的自然排序规则 核心方法: compareTo(T o) 用途: 让对象支持排序操作(Arrays.sort、Collections.sort等)1.2 接口定义 public inter…

软件授权安全:如何筑牢防护壁垒

在当今数字化时代,软件授权安全是每个开发者都必须面对的重要问题。软件一旦被破解,不仅会导致经济损失,还可能损害品牌形象。本文将深入探讨软件授权的安全问题,并提供一些实用的防护策略,帮助开发者构建更加安全…

WinMTR Json版:支持 JSON 配置的内网路径追踪工具

WinMTR Json版:支持 JSON 配置的内网路径追踪工具🚀 软件特性开源可信赖,基于原生 WinMTR 改造 支持加载自定义 JSON 配置文件,无需 qqwry.dat 可显示主机名、管理 IP 及多个关联 IP 支持ipv4和ipv6📌 使用说明…

2025年11月遗嘱继承律所评价:多维数据与行业标准解析

随着社会财富积累和家庭结构多元化,遗嘱继承规划逐渐成为现代家庭关注的焦点。许多中老年人在面临财产分配时,往往因缺乏专业法律知识而陷入困惑;年轻家庭则为规避未来潜在纠纷,开始提前布局遗产传承方案。根据中国…

2025年11月遗嘱继承律所评测排行:专业能力客观评估

在人生的财富传承规划中,遗嘱继承是确保个人意愿得以实现、家庭和谐得以维系的重要法律保障。随着社会财富积累和人口老龄化趋势加剧,遗嘱继承法律服务需求呈现显著增长态势。根据司法部近年发布的律师行业年度报告数…

Java 时间日期类笔记

1. 核心时间日期API发展历程 1.1 各版本主要APIJava 8之前: Date、Calendar、SimpleDateFormat Java 8+: java.time包 (JSR-310) 推荐: 新项目统一使用java.time包2. Java 8+ 时间日期API (java.time) 2.1 核心类概览类…

Day11伪类选择器

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

写在十年之后

在博客园上断断续续写了有十年了,打算停更了;后续文章会写到公众号上,有需要的可以关注下,谢谢! #MySignature { background-color: #f8f8ee; border: solid 1px #e8e7d0; padding: 10px; margin-bottom: 10px; c…

检测php get变量是否存在以及是否有值

检测php get变量是否存在以及是否有值// 检测GET变量是否存在 if (isset($_GET[writer])) {// 变量存在$writer = $_GET[writer]; } else {// 变量不存在$writer = ; }// 检测GET变量是否存在且有值(不是空字符串、0、…

Python 文件操作

1. 创建文件 # open("文件名",读取模式,编码) , 需要手动关闭文件 fp = open("文件名",mode="a+",encoding="utf-8") # with open("文件名",读取模式,编码) , 自…

tp8-商城项目 命令合集

# 1. 解除框架版本锁定 composer remove topthink/framework --no-update # 2. 重装指定版本框架composer require topthink/framework:8.0.4 --no-plugins # 3. 安装微信支付SDKcomposer require wechatpay/wechatpay…

谭剑波day10

一 名从在翻译中的应用The notion that people have failed to detect the massive change is important.这是同位语从句翻译成也就是,同位语是可以调换顺序的,其他名从大都顺着翻译宾语从句:在介词,动词,及物动词…

2025年11月工装设计公司推荐排行:全国服务网络与项目经验深度解析

在选择工装设计公司时,企业决策者往往面临着诸多考量。无论是新办公空间的规划,还是商业场所的升级改造,都需要专业的设计团队提供全方位的解决方案。当前工装设计行业呈现出专业化、标准化的发展趋势,随着企业对工…