从0到1构建美团压测工具
作者:网络转载 发布时间:[ 2016/3/3 13:49:41 ] 推荐标签:软件测试
拷贝流量
Thrift服务打压的难点之一是如何简单地拷贝线上真实流量用来构建打压请求。一些大型的Thrift服务数据结构非常复杂,写打压脚本的时候需要很多代码来解析日志,而且容易出错。 因此提供一个简单好用的拷贝流量方法是十分有必要的。
在这里压测工具提供了一个叫VCR(录像机)的工具来拷贝流量。VCR能够将线上的请求序列化后写到Redis里面。
考虑到用户需要查看具体请求和易用性等需求,终选取了JSON格式作为序列化和反序列化的协议。同时需要部署在生产环境,为了降低对线上服务的影响,这里采取了单线程异步写的方式来拷贝流量。
聚合数据
应用打压完成后,需要一些指标来评估压测结果,常见的指标有:
· 大响应时间
· 平均响应时间
· QPS
· TP90
· TP50
压测工具采用了 InfluxDB 来完成数据的聚合工作。
以TP90为例子,仅需要一行查询能实现需求。
SELECT PERCENTILE(response_time, 90) FROM test_series GROUP BY time(10s)
架构
整体而言,整个打压过程如下:
实践
拷贝流量
美团内部的服务大多使用Java来构建,VCR以Maven Package的方式提供给用户。
对用户来说只需要2行代码可以拷贝流量。
为了不影响线上服务,通常选取单台机器进行流量拷贝工作。
public class TestAppRPC implements TestApp.Iface {
private Vcr _vcr = new Vcr("testapp"); // 指定拷贝流量的key
@Override
public TestResponse echo(TestRequest req) throws TException {
_vcr.copy(req); // 拷贝操作
long start = System.currentTimeMillis();
TestResponse response = new TestResponse();
return response;
}
}
一旦流量拷贝完成后,通过Web界面,用户能够查看日志的收集情况和单条日志的详情。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11