常见的互联网架构中,一般都能看到spring+mybatis+mysql+redis搭配的身影,在我所服务的公司亦是如此。一般来说,应用内部的接口都是直接调用的,所谓的面向接口编程,应用间的调用直接调或者通过类似dubbo之类的服务框架来执行,数据格式往往采用json,即统一也方便各数据间做转换和取值,缓存一般使用redis或memcached,存储一些对象或json格式的字符串。对外提供的接口,一般都需要进行压力测试,以便估算其性能,并为后续的调优提供指导方向,以下接口便是在压测过程中出现的各种“奇怪现象”,所谓奇怪,指的是从表象上看与我们正常的逻辑思路不符,但其本质还是我们对压力下程序的表现出来的特征不熟悉,用惯用的知识结构试图去解释,这根本是行不通的。下文是我在一次全面压测过程后对数据进行的分析汇总,其中的现象是很多压测常见的,里面的分析过程及改进措施我认为有很大的参考意义。具体内容如下:(部分接口为了安全我省略了其名称,但不影响我们的分析,另外形如1N3T之类的表示的是1台nginx,3台tomcat,具体的tps数值只是为了说明优化前后的比照,没有实际意义)
同等环境tps由6842增长为23592.坑爹的生产环境debug日志级别。
常见的互联网架构中,一般都能看到spring+mybatis+mysql+redis搭配的身影,在我所服务的公司亦是如此。一般来说,应用内部的接口都是直接调用的,所谓的面向接口编程,应用间的调用直接调或者通过类似dubbo之类的服务框架来执行,数据格式往往采用json,即统一也方便各数据间做转换和取值,缓存一般使用redis或memcached,存储一些对象或json格式的字符串。对外提供的接口,...
前言:前几天在用jmeter做
性能
测试
的时候,遇到一个响应时间长的
性能
问题,简单总结一下,分享给大家,希望能给大家在
性能
测试
过程中类似问题提供一个
性能
问题
分析
定位的思路。
现象如下图,响应时间很长,达到了18秒左右,tps也只有20。
根据经验,直奔oracle数据库服务器,top命令一看,负载高,用户
cpu
将近100%,
cpu
已经达到
性能
瓶颈了,shift+p,或者键盘大写状态下按P,将所有进程按
cpu
使用率从高到低排序,这样,我们关注消耗
cpu
最多的进程即可。
直接选取上图第一个进程ID27087,
对于某些不长更新的数据,并且修改了不需要立即生效,可以容忍短暂的延迟的数据可以做一个缓存。
使用的到缓存有三种:
a. 使用第三方的缓存 但是只能缓存可以序列化和反序列化的数据,不能缓存带有泛型的数据,带有泛型的数据序列化后,暂时还没有找到反序列化的方法。
b. 使用直接缓存在内存中比如使用ConcurrentHashMap,因为要设置超时时间,所以存一个值需要两个key,一个保存值 一
记一次年前,
性能
测试
组人员,给我
测试
出的bug吧,说实话,这种bug也只有在高
并发
情况下才会出现。
说下业务背景,我的程序中有一段逻辑是这样设计的:用户第一次请求,我会根据用户的请求条件,用哈希算法算出一个 哈希值,再将用户的请求条件插入的到一张表里;然后拿查询条件去请求其他系统(耗时较长)和查询本地数据库里的业务表(数据量较大),这样查询完后,会将两部分的数据汇总到一张结果表里,然后再从结果表中将数据统一查出返回给调用系统。
原本这也没啥问题,
测试
几轮下来,除了数据质量问题(与程序无关),没有出现过其他状
文章目录
压测
是什么
压测
的目的
压测
的要求
压测
的分类
压测
的过程明确
压测
目的梳理
压测
链路准备
压测
数据构造
压测
环境执行
压测
压测
的保护机制清理数据总结复盘
压测
常见问题
压测
是什么
压测
是一种
测试
方式,通过不断对被压服务施加压力的来
测试
服务的
性能
极限,寻找瓶颈。
压测
的目的
压测
的目标关系到
压测
方案的确定和实施。一是
压测
的场景(
接口
,
接口
组),二是
压测
的目标
探寻服务的
性能
上限,可通过
压测
结论进行限流,保护自身的服务
大促前,判断目前的机器配置、服务逻辑是否能满足业务的要求,如果不满足需要进行优化(加机器,加缓存,代
首先,您需要安装 JMeter 工具,并在工具中创建一个
测试
计划。然后,您需要添加一个 HTTP 请求默认值配置元件,以便设置服务器的主机名和端口号。接下来,您需要添加一个 HTTP 请求元件,并设置请求的路径和方法。在请求元件中,您可以设置一些参数,例如请求头、请求体、Cookie 等。最后,您需要添加一个聚合报告元件,以便查看
测试
结果。
在
压测
过程中,您可以通过调整以下参数来优化
测试
性能
:
1. 线程数:可以增加线程数来模拟更多的
并发
请求。
2. 请求延迟:可以设置请求之间的延迟时间,以便模拟真实的用户行为。
3. 断言:可以添加断言来验证服务器的响应是否符合预期。
4. 监控:可以使用 JMeter 的监控工具来监控服务器的
性能
指标,例如
CPU
使用率、内存使用率等。
需要注意的是,
压测
过程中需要合理设置参数,以避免对服务器造成过大的负载。同时,也需要注意保护服务器的安全性和稳定性。