如何将AI能力与大数据技术结合,助力数据分析治理等工作的效率大幅提升,优化大数据引擎的性能及成本? 了解详情
写点什么

反应式服务的性能应该如何测试?

  • 2018-12-05
  • 本文字数:1022 字

    阅读完需:约 3 分钟

反应式服务的性能应该如何测试?

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


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


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


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


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


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


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


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


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


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


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


Yenokyan 总结了要点:


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

  • 尽早开始测量;

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

  • 测试每个版本的性能。


原文链接

https://www.infoq.com/news/2018/11/performance-testing-reactive


2018-12-05 14:421050
用户头像

发布了 731 篇内容, 共 404.6 次阅读, 收获喜欢 1963 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

从0开始学VUE - 踩坑记录

恒生LIGHT云社区

JavaScript Vue 前端

架构实战营模块二作业

Evan

聊天与学习

将军-技术演讲力教练

实用机器学习笔记十五:卷积神经网络

打工人!

深度学习 算法 学习笔记 卷积神经网络 12月日更

面向WEB开发的Docker(三):安装Docker

devpoint

Docker 12月日更

结构化思维 - 感悟

Hillz

感悟 结构化思维

iOS开发:dSYM文件分析

三掌柜

28天写作 28 12月日更 12月

Go 语言快速入门指南:第五篇 与数据为舞之切片

宇宙之一粟

golang slices 切片 签约计划第二季 12月日更

Go 语言快速入门指南 【专题合集】

宇宙之一粟

Go 内容合集 签约计划第二季 技术专题合集

架构实战营模块二学习总结

Evan

以 Kubernetes 的方式来安装运行极狐GitLab Runner

极狐GitLab

Kubernetes runner 极狐GitLab

Go 语言快速入门指南:第六篇 与数据为舞之映射

宇宙之一粟

哈希表 字典 映射 签约计划第二季 12月日更

io_uring vs epoll ,谁在网络编程领域更胜一筹?

OpenAnolis小助手

网络编程

面试官:StringBuilder与TextWriter有什么区别

喵叔

28天写作 12月日更

架构实战营第二周作业

Jude

「架构实战营」

0 基础实现简单的Kotlin ListView

阿策小和尚

28天写作 Android 小菜鸟 12月日更

高性能云网关,打通云内外业务互通的任督二脉

华为云开发者联盟

网关 云平台 华为云Stack 云网关 L2BR/L3G

一文带你从零认识什么是XLA

华为云开发者联盟

深度学习 tensorflow PyTorch 深度学习编译器 XLA

常见序列化算法学习笔记二

六维

序列化 12月日更

通过淘宝数据学习爬虫,python scrapy requests与response对象

梦想橡皮擦

12月日更

一本用户体验时代的产品生存指南!

博文视点Broadview

【LeetCode】把二叉搜索树转换为累加树Java题解

Albert

算法 LeetCode 12月日更

给弟弟的信第14封|人到年纪,自己就是屋檐

大菠萝

28天写作

Hystrix

李子捌

微服务 28天写作 12月日更

每一天

Nydia

React进阶(六):组件生命周期

No Silver Bullet

React 生命周期管理 12月日更

常用邮箱申请渠道【小程序专题2】

坚果

小程序 28天写作 12月日更 邮箱

Linux学习教程从入门到精通:条件判断和流程控制语句If

侠盗安全

Linux 运维 运维工程师 云计算架构师

[Pulsar] Acknowledgement原理

Zike Yang

Apache Pulsar 12月日更

Java并发编程实战系列(15)-原子遍历与非阻塞同步机制

JavaEdge

12月日更

Prometheus Exporter (二十八)RabbitMQ Exporter

耳东@Erdong

RabbitMQ Prometheus 28天写作 exporter 12月日更

反应式服务的性能应该如何测试?_语言 & 开发_Pierre-Luc Maheu_InfoQ精选文章