从0到1构建美团压测工具

发表于:2016-3-03 13:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:nateriver520    来源:51Testing软件测试网采编

  拷贝流量
  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界面,用户能够查看日志的收集情况和单条日志的详情。
32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号