博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反应式服务的性能应该如何测试?
阅读量:6909 次
发布时间:2019-06-27

本文共 1068 字,大约阅读时间需要 3 分钟。

Pivotus工程总监Lilit Yenokyan在Reactive峰会上介绍了反应式服务性能测试。Yenokyan描述了性能测试的类型,并介绍了运行测试和分析结果所需的工具。

Yenokyan首先介绍了一个银行代理商用于管理与客户对话的门户网站。它还包含了一个React Native应用程序。这个应用程序可能被任何一个后端使用,这可能意味着有数百万用户。

团队意识到,系统产生的流量将是巨大的,但问题是系统可以承受多少负载以及如何设置准确的流量。

Yenokyan将性能测试的目标定义为确定容量。有了性能指标,就可以通过系统的运行成本来评估和比较系统性能。这给人一种花钱的感觉,如果潜在的收益值得花时间,可能就需要进行优化。

Yenokyan定义了三种性能测试。负载测试是一个用户数量恒定的场景。压力测试是指将系统推向极限,这样可以确定在发生崩溃之前它可以承受多大的压力。它还可以用于测试故障恢复。耐久性测试是指在中等负载下长时间运行,它可用于发现内存消耗等问题。

性能测试的第一步是定义成功标准。为实现这一目标,必须先定义具体的比例术语,比如并发用户数。然后再定义和实现具体的场景。为目标系统确定目标,以便制定具体的性能目标。理想情况下,测试将在生产集群上运行。不过这通常不是一种切实可行的解决方案,克隆一个生产环境或许是更好的做法。

Yenokyan列举了他们团队的几个技术栈工具。测试本身使用Apache JMeter执行。JMeter是一个测试工具,可以并行发送请求并生成结果。

Jenkins自己会运行测试。它提供了各种参数和构建触发器,可用于进行负载测试。参数化构建还提供了一种对测试进行更精细控制的方法,无需借助手动执行。

测试结果被发送到时间序列数据库InfluxDB,然后通过可视化工具Grafana对数据进行可视化。Datadog是一种基础设施监控服务,它提供了有关系统中不同计算机资源使用情况的指标。

测试单体系统和微服务系统之间的区别在于如何解释结果。在单体系统中,性能被视为一个整体。而在微服务系统中,每个微服务都进行独立的测试,然后进行独立优化和扩展。

Yenokian继续分享他们团队学习到的经验教训。首先是测试缩放。虽然团队认为应用程序会通过添加实例进行线性扩展,但测试显示吞吐量会保持不变。他们通过分析数据来发现限制水平扩展的几个瓶颈,例如数据库和Web套接字限制。

Yenokyan总结了要点:

  • 在提交之前定义预期性能;

  • 尽早开始测量;

  • 对显而易见的东西提出质疑;

  • 测试每个版本的性能。

原文链接

转载地址:http://jrfcl.baihongyu.com/

你可能感兴趣的文章
HDU1003 Max Sum(求最大字段和)
查看>>
cocos2dx A*算法
查看>>
Trapping Messages Sent to an Application
查看>>
【JQuery插件】元素根据滚动条位置自定义吸顶效果
查看>>
编程之路
查看>>
Myeclipse7.5 下载 安装 注冊 注冊码 100%成功
查看>>
Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
查看>>
Windows网络编程
查看>>
混沌分形之朱利亚集(JuliaSet)
查看>>
读书心得:思考·后半本
查看>>
CreateFileMapping使用方法
查看>>
Android中Broadcast Receiver组件具体解释
查看>>
[转载]SQL Server的聚集索引和非聚集索引
查看>>
SSIS中Sql Task 获取系统变量
查看>>
linux dd命令实用详解
查看>>
android系统权限SET_PREFERRED_APPLICATIONS怎么获取
查看>>
Oracle 统计量NO_INVALIDATE参数配置(上)
查看>>
在ECSHOP后台的订单列表中显示配送方式
查看>>
Android Drawable
查看>>
微软职位内部推荐-Senior SDE
查看>>