写点什么

性能测试中如何确定并发用户数

  • 2014-10-11
  • 本文字数:1190 字

    阅读完需:约 4 分钟

近日,Hitest 在其技术博客上发表了一篇题为《并发用户数与 TPS 之间的关系》的文章,文章对 TPS 和并发用户数做了详细的解释,并针对性能测试中系统性能的衡量维度和测试策略给出了自己的建议。Hitest 是阿里巴巴技术质量部提供的一款 Web& 移动应用安全测试 SaaS 化服务平台,旨在帮助开发者简单快捷地进行安全测试。

在文中,作者首先对并发用户数和 TPS 做了解释:

并发用户数:是指现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数 (Virutal User)。并发用户数和注册用户数、在线用户数的概念不同,并发用户数一定会对服务器产生压力的,而在线用户数只是 ”挂” 在系统上,对服务器不产生压力,注册用户数一般指的是数据库中存在的用户数。

TPS:Transaction Per Second, 每秒事务数, 是衡量系统性能的一个非常重要的指标。

作者认为现在很多从业人员在做性能测试时,都错误的认为系统能支撑的并发用户数越多,系统的性能就越好。要理解这个问题,首先需要了解 TPS 和并发用户数之间的关系:

TPS 就是每秒事务数,但是事务是基于虚拟用户数的,假如 1 个虚拟用户在 1 秒内完成 1 笔事务,那么 TPS 明显就是 1;如果某笔业务响应时间是 1ms, 那么 1 个用户在 1 秒内能完成 1000 笔事务,TPS 就是 1000 了;如果某笔业务响应时间是 1s, 那么 1 个用户在 1 秒内只能完成 1 笔事务,要想达到 1000TPS,至少需要 1000 个用户;因此可以说 1 个用户可以产生 1000TPS,1000 个用户也可以产生 1000TPS,无非是看响应时间快慢。

也就是说,在评定服务器的性能时,应该结合 TPS 和并发用户数,以 TPS 为主,并发用户数为辅来衡量系统的性能。如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成,因为在系统负载不高的情况下,将思考时间 (思考时间的值等于交易响应时间) 加到脚本中,并发用户数基本可以增加一倍,因此用并发用户数来衡量系统的性能没太大的意义。

作者最后做了综述,他认为在性能测试时并不需要用上万的用户并发去进行测试,如果只需要保证系统处理业务时间足够快,几百个用户甚至几十个用户就可以达到目的。据他了解,很多专家做过的性能测试项目基本都没有超过 5000 用户并发。因此对于大型系统、业务量非常高、硬件配置足够多的情况下,5000 用户并发就足够了;对于中小型系统,1000 用户并发就足够了。

性能测试需要一套标准化流程及测试策略,在实际测试时我们还需要考虑其它方面的问题,比如如何模拟成千上万来自不同地区用户的访问场景、如何选用合适的测试软件。性能测试对一些小的团队来说并非易事,不过前段时间阿里云发布了性能测试服务 PTS ,PTS 可以帮助开发者通过分布式并发压力测试,模拟指定区域和指定数量的用户同时访问,提前预知网站承载力。这就是云计算给我们带来的便利。

在 10 月 16 日举行的阿里云开发者大会上,PTS 团队将会参与分享《护航世界杯—阿里技术保障体系分享》,敬请关注。

2014-10-11 19:1322390
用户头像

发布了 219 篇内容, 共 129.7 次阅读, 收获喜欢 186 次。

关注

评论 1 条评论

发布
用户头像
感谢老师分享,get到了
2021-11-04 21:01
回复
没有更多了
发现更多内容

数据湖探索DLI新功能:基于openLooKeng的交互式分析

华为云开发者联盟

数据 处理

在K8S Volume中使用 subPath

东风微鸣

Kubernetes 最佳实践

食堂就餐卡系统设计

Griffenliu

数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库

华为云开发者联盟

安全 数据 加密

谁说AI看不懂视频?

华为云开发者联盟

视频 剪辑

容器开发运维人员的Linux操作机配置优化建议

东风微鸣

Kubernetes 最佳实践 k8s入门

终于,SM2国密算法被Linux内核社区接受了!

阿里云基础软件团队

关于编码

西贝

Java 编码

GitLab用户切换引发的某程序员“暴动”,怒而开源项目源码

小Q

Java git 学习 开发 代码仓库

架构训练营第一周学习小结

李日盛

Vidyo产品给用户方带来了什么直接的便利

dwqcmo

音视频 集成架构 解决方案 智能硬件

学习总结

饺子

区块链赋能供应链金融|应用优势与四类常见模式

CECBC

区块链

批处理 有状态等应用类型在K8S上应该如何配置?

东风微鸣

Kubernetes 最佳实践

小熊派开发实践丨漫谈LiteOS之传感器移植

华为云开发者联盟

开发 IoT stm32

为什么Java容器推荐使用ExitOnOutOfMemoryError而非HeapDumpOnOutOfMemoryError?

东风微鸣

Kubernetes 最佳实践 jvm调优

Java中String占用空间的评估标准

陈德伟

Java jdk 源码剖析

微服务的理想与现实

京东科技开发者

云原生

架构师训练营第五周学习总结

尹斌

趣味科普丨一文读懂云服务器的那些事儿

华为云开发者联盟

镜像 服务器 服务

1分钟带你get React setState 面试要点

Leo

面试 大前端 React setState

DDIA 读书笔记(2)数据模型的存储与检索

莫黎

读书笔记

全面到哭!BAT内部Java求职面试宝典,必须人手一份!

Java架构之路

Java 程序员 架构 面试 编程语言

mongodb源码实现、调优、最佳实践系列-Mongodb网络模块源码实现及性能调优(一)

杨亚洲(专注MongoDB及高性能中间件)

MySQL mongodb 中间件 架构师 分布式数据库mongodb

架构师训练营第一周课后作业

李日盛

spring-boot-route(二十二)实现邮件发送功能

Java旅途

Java Spring Boot 发送邮件

socket编程

菜鸟小sailor 🐕

websocket

标准的开发框架,对企业开发有多重要?

Learun

敏捷开发 快速开发

面试官的灵魂一击:你懂 MySQL 事务日志吗?

Java架构师迁哥

容器化应用系统上生产的最佳实践

东风微鸣

Kubernetes 最佳实践 生产

商用密码与区块链共推数字经济发展

CECBC

网络安全 数字经济

性能测试中如何确定并发用户数_DevOps_郭蕾_InfoQ精选文章