如何做好服务性能测试

news2024/9/22 1:37:51

一、什么是性能测试

新功能上线或切换底层数据库或扩容调优,根据实际业务场景的需要,做必要的性能压测,收集性能数据,作为上线的基准报告。

性能测试一般分一下几个阶段:

1. 性能测试

     并发量小(jmeter 并发线程几十个,可以选择 10 个线程),系统各资源使用率低,接口响应时间端,系统整体吞吐低。

2. 负载测试

 并发量适中,系统各资源已趋于高负载,持续观察接口的吞吐量、各资源的负载情况。通过对比个资源负载,寻找性能瓶颈。

举几个例子:

a. 如果 ECS 负载较高,但是数据库负载较低:

可能的原因:

i. 数据库连接池配置的连接数较小,大流量还没到数据库

ii. 各种连接池,比如数据库的、http 连接池等,及 dubbo 线程池大小。

3. 压力测试

做压力测试的目的,主要是观察接口在瞬时大流量过来的情况,接口各性能指标的变化,来判断接口后端服务及依赖的各中间件是否能承受的住。

二、性能相关的术语

1、事务

用户发送请求->服务器接口请求->服务器从数据库或其他三方服务获取数据->生成服务返回结果->返回用户

2、并发数

系统同时处理的 Request 数

3、响应时间

客户端从发出请求到接收到响应总的耗时时间。

QPS(TPS)

4、系统每秒处理的 Query/Transcation Request 数

QPS(TPS)=并发数/响应时间

1000/s =并发数/0.2s ===》并发数=800  

2000/s =并发数/0.5s ===》并发数= 1000

三、影响性能压测的因素

1. 压测客户端的并发能力

2. 应用系统

a. 池化资源:http connection pool / db connection pool / rabbion

b. 交互数据的大小

c. 逻辑:串行逻辑

3. 数据库 

4. 中间件:redis/kafka 规格及应用使用的参数

三、如何寻找性能瓶颈

1. 首先,要清楚请求链路。从压测机上发出到响应,请求处理需要经过或依赖哪些服务或中间件(同下文的环节,方便描述),所以链路上各每个环节都可能会成为性能瓶颈点。比如请求接口是走域名访问,势必会经过 nginx 转发,那么 nginx 也可能会成为性能瓶颈点。

2. 要清楚整条链路上各环节资源配置。做好链路上各环节的资源的监控,方便及时发现问题。

3. 寻找性能瓶颈,应先从整体到局部排查。首先观察链路上各环节的负载情况,如果发现其中一个环节及之后的环节负载都很低,那么应该是上游领近的节点处理慢了,此时应该重点分析处理慢的节点。待整个链路的各资源(服务器、数据库或其他中间件)的负载上来了,就需要调整环节内部的参数,比如数据库连接池、http 连接池、dubbo 线程池及队列等参数,寻找最优参数值。

四、性能优化措施

性能测试的目的是为了解系统的性能以此评估上线部署时所需要多大资源才能满足业务需求。在调测的过程中,寻找性能瓶颈,发现性能问题,结合业务场景做优化。

1. 读少写多的数据,接受延迟查询的数据,可以考虑异步写入。

2. 优化各连接池及队列的大小

参考:如何做好性能压测丨压测环境设计和搭建

 https://baijiahao.baidu.com/s?id=1690639698157730947&wfr=spider&for=pc

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

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

相关文章

【C++】详解内存中的堆和栈

2023年8月20日,周日早上 感觉很多东西还没吃透,很多疑问还没解决。 这篇文章可能会不定期更新。 还没解释为什么栈的空间有限,而堆的空间很大 还没解释栈和堆在内存中的位置 ...... 目录 怎么申请栈空间语法举例说明 怎么申请堆空间语法…

无涯教程-PHP - 常量声明

常量值不能更改。默认情况下,常量区分大小写。按照约定,常量标识符始终为大写。与变量不同,您不需要具有"$"的常量。 constant 函数 如名称所示,此函数将返回常量的值。 当您要检索常量的值但不知道其名称时&#xf…

6种方法Word中的页眉横线如何删除

01 如何给Word添加页眉? 方法1: 打开Word文档,将鼠标放在Word顶部,双击鼠标,就可以进入页眉编辑状态,这时候,直接添加页眉内容就好了。 方法2: 在Word文档顶部菜单栏点击【插入】…

拒绝摆烂!C语言练习打卡第四天

🔥博客主页:小王又困了 📚系列专栏:每日一练 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、选择题 📝1.第一题 📝2.第二题 &#x1f4d…

【Python机器学习】实验14 手写体卷积神经网络(PyTorch实现)

文章目录 LeNet-5网络结构(1)卷积层C1(2)池化层S1(3)卷积层C2(4)池化层S2(5)卷积层C3(6)线性层F1(7)线性层F2 …

开启AI创新之旅!“华为云杯”2023人工智能应用创新大赛等你来挑战

简介 近年来,人工智能技术的发展如日中天,深刻地改变着我们的生活方式和产业格局。 为了培养AI人才,持续赋能AI企业,推进国家新一代人工智能开放创新平台建设,打造更加完善的AI技术创新生态,华为&#xf…

从NLP到聊天机器人

一、说明 今天,当打电话给银行或其他公司时,听到电话另一端的机器人向你打招呼是很常见的:“你好,我是你的数字助理。请问你的问题。是的,机器人现在不仅可以说人类语言,还可以用人类语言与用户互动。这是由…

中大型企业选择CRM系统必备五大功能是什么?

中大型企业的特点是客户数量多,业务复杂,需求多样,对CRM系统的功能和作用有着更高的要求。下面我们从五个方面来为您介绍一下,中大型企业CRM系统的功能及作用。 客户信息管理: CRM系统可以帮助企业收集、存储、分析客…

【HCIP】VLAN实验

题目: 交换机上接口配置: SW1 [SW1]vlan batch 2 to 6 [SW1]port-group group-member Ethernet 0/0/2 Ethernet 0/0/4 [SW1-port-group]port link-type access [SW1-port-group]port default vlan 2 [SW1]int e 0/0/3 [SW1-Ethernet0/0/3]port hybrid …

c++如何解决内存泄漏

Linxu Linux系统下解决内存泄漏可以使用valgrind工具。 下载valgrind sudo apt-get install valgrind Linux下使用valgrind g -g -o app test.cpp valgrind --leak-checkfull ./app 代码如下 #include<iostream> using namesapce std; int main() {int i 0;int * …

【脚本推荐】网页字体渲染插件

下图是三种网页字体增强的效果对比。 **SUM&#xff1a;**前面两个都是通过脚本运行&#xff0c;而最后一个是通过扩展插件&#xff1b;中间的脚本&#xff08;字体渲染&#xff09;效果是最好的&#xff0c;可惜输入框没有效果&#xff0c;也就意味着如果现在网页上写写学习笔…

JavaFx 实现水平滚动文本(跑马灯效果)

本文是以TornadoFx框架进行编写,各位使用JavaFx可以参考 代码已经封装在common-controls库中 效果 代码 实现原理就是利用了JavaFx里的动画效果去修改scrollpane的translateX属性,原本想在text上改造的,发现文字过多就不行了,最终还是使用了scrollpane组件来完成功能 就是需…

【Linux从入门到精通】动静态库的原理与制作详解

本篇文章主要是围绕动静态库的原理与制作进行展开讲解的。其中涉及到了inode的概念引入和软硬连接的讲解。会结合实际操作对这些抽象的概念进行解释&#xff0c;希望会对你有所帮助。 文章目录 一、inode 概念 二、软硬链接 2、1 软连接 2、2 硬链接 三、动静态库概念 3、1 静态…

RenderDoc 导出Cubemap到UE

找到使用了Cubemap的模型,再Output里会显示该模型使用的所有贴图 ,选中Cubemap导出 选择导出格式为HDR 导出的Cubemap是竖着的,需要再PS里逆时针旋转&#xff19;&#xff10;度 还有&#xff0c;导出的的Cubemap方向是错的,需要把3,4 跟1,2 对换,6旋转180度 UE 文档里的方向参…

CefSharp自定义缓存实现

提高页面加载加速&#xff1a;CefSharp缓存可以缓存已经加载过的页面和资源&#xff0c;当用户再次访问相同的页面时&#xff0c;可以直接从缓存中加载&#xff0c;而不需要重新下载和解析页面和资源&#xff0c;从而加快页面加载速度。减少网络流量&#xff1a;使用缓存可以减…

如何声明一个全局变量?有什么注意事项?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 声明全局变量⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚…

wxPython两个页面跳转简单方案

import wxclass Frame1(wx.Frame):def __init__(self, parent):super().__init__(parent)panel wx.Panel(self)button wx.Button(panel, label"跳转到Frame2")button.Bind(wx.EVT_BUTTON, self.on_button_click)sizer wx.BoxSizer(wx.VERTICAL)sizer.Add(button, …

大数据-玩转数据-Flink App市场推广统计

一、说明 电商网站中已经有越来越多的用户来自移动端&#xff0c;相比起传统浏览器的登录方式&#xff0c;手机APP成为了更多用户访问电商网站的首选。对于电商企业来说&#xff0c;一般会通过各种不同的渠道对自己的APP进行市场推广&#xff0c;而这些渠道的统计数据&#xf…

SpringBoot 插件化开发

SpringBoot 插件化开发 介绍使用插件的好处1 模块解耦2 提升扩展性和开放性3 方便第三方接入 插件化常用实现思路Java常用插件实现方案ServiceLoader方式1 java spi2 java spi 简单案例 自定义配置约定方式添加配置文件自定义配置文件加载类自定义测试接口启动类项目结构 自定义…

【python地理信息绘制入门】cartopy学习

cartopy学习 cartopy简介cartopy绘制中国行政地图&#xff08;cartopy的版本为0.20.0&#xff09;cartopy绘制中国行政地图&#xff0c;单一省细分画出市区cartopy库的一些问题 cartopy简介 cartopy是一个用于绘制地图投影和地理数据可视化的 Python 库。它是建立在 matplotli…