如何真实压测一个Web浏览型应用的性能

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:

对于应用压测大家应该都有一些自己的方式,通常都是构造一些请求,不过构造请求学问就大了。

构造什么样的请求?构造的请求是否真实?构造的请求各种业务场景的配比?读写比例?

对于一个Web浏览型应用来说,相比对纯DB的压测,会更复杂一些,主要因为涉及缓存。

之前采用过很多压测方式,包括ab、httpload等等,这些压测方式的缺点在于无法真实反映一个浏览型系统的性能指标。和其它对DB的查询或是调用外部服务的应用不同,浏览型系统在大量采用Cache和存在命中率的前提下,命中Cache和不命中的性能差距非常大。

如果按悲观的角度,从完全不命中的角度考虑,那么单机的能力会很低,相应的需要增加非常多的机器,而如果把命中率估得很高,又显得太乐观。还有另外一个比较头疼的问题是,即使你知道自己的命中率是多少,你也无法仅仅按百分比去计算你的QPS能力,因为有可能你的命中以外还有额外的开销,并不是内存直接返回的,例如各种ESI。你还需要准确地计算出这些消耗的类型以及它们各自的占比、耗时,最后会被围困在一个存在各种不确定性因素的牢笼中。

最悲催的情况就是你用一个URL去压测,压出来一个非常好的性能,然后上线时发现单机根本达不到这个性能指标,只能临时去加机器缓解。

于是我就在思考,如何摆脱之前那些不确定性因素,我们不去猜测命中率、QPS这些指标,能否通过更真实的线上请求来做?

事实是当然可以,我们随机选取一些机器,通过tcp包拷贝的方式直接将真实请求转发到一台机器处理,做到了真实场景下的压测。

这种压测的效果还是不错的,没再压出不靠谱的那么虚高的指标,回归大地,回归真实。

事实上当我们把单机QPS压到之前出问题的量级时,确实复现了当时的情况,这也进一步证实了这种压测方式是靠谱、真实的。

需要注意的是你需要注意自己的Cache范围,本机Cache还好,如果是分布式Cache,所有机器共享的,那么需要保证被压测机器访问的Cache和其它机器要分开,否则被压机器的Cache永远是命中的。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
12天前
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
40 1
|
1月前
|
SQL 缓存 搜索推荐
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,涵盖从基础架构到性能优化的多个方面。通过分析当前主流后端技术的优缺点,并提供一些实用的解决方案和建议,帮助开发者更好地应对日常开发中的挑战。
48 1
|
1天前
|
前端开发 安全 关系型数据库
PHP在Web开发中的应用及其优势###
【10月更文挑战第16天】 — 本文探讨了PHP在现代Web开发中的广泛应用及其显著优势。通过分析PHP的核心特性,如灵活性、易用性和广泛的应用支持,阐述了为何PHP成为众多开发者和公司的首选技术。文章还介绍了PHP与其他编程语言的比较,并展望了其未来的发展趋势。 ###
10 2
|
2天前
|
机器学习/深度学习 JavaScript 前端开发
深入探索WebAssembly:提升Web应用的性能
【10月更文挑战第15天】深入探索WebAssembly:提升Web应用的性能
11 3
|
6天前
|
机器学习/深度学习 人工智能 算法
未来已来:探索量子计算在Web开发中的应用
在这篇文章中,我们将穿越技术的迷雾,一窥未来。量子计算,这一曾经只存在于理论中的技术,正逐渐走近现实,它的革命性潜力正在被探索其在Web开发中的潜在应用。本文将带你了解量子计算的基本概念,以及它可能如何重塑我们构建和交互Web应用的方式。准备好,让我们的想象力随着量子比特一起跳跃。
|
16天前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
35 3
|
17天前
|
缓存 前端开发 JavaScript
构建高性能Web应用:优化前端性能的策略
构建高性能Web应用:优化前端性能的策略
|
28天前
|
Web App开发 JavaScript 前端开发
构建高效Web应用:Node.js与Express框架的深度整合
【9月更文挑战第28天】在现代Web开发领域,Node.js和Express框架的结合已成为打造高性能、易扩展应用的黄金组合。本文将深入探讨如何利用这一技术栈优化Web应用架构,提供具体实践指导,并分析其性能提升的内在机制。通过代码示例,我们将展示从基础搭建到高级功能的实现过程,旨在为开发者提供一条清晰的学习路径,以实现技术升级和项目效率的双重提升。
40 3
ly~
|
1月前
|
存储 监控 小程序
除了 Web 开发,PHP 还可以应用于哪些领域?
PHP 在 Web 开发之外还有多个应用场景:1)命令行脚本,如批量处理文件、数据库管理及系统监控;2)利用 PHP-GTK 等工具开发桌面应用,满足特定业务需求;3)结合微信云开发功能支持微信小程序后端,处理数据存储与用户认证;4)为小型游戏或特定类型游戏开发游戏服务器逻辑;5)在物联网领域作为后端语言处理设备数据交互与分析。
ly~
34 4
|
1月前
|
JavaScript 前端开发 UED
WebSocket在Python Web开发中的革新应用:解锁实时通信的新可能
在快速发展的Web应用领域中,实时通信已成为许多现代应用不可或缺的功能。传统的HTTP请求/响应模式在处理实时数据时显得力不从心,而WebSocket技术的出现,为Python Web开发带来了革命性的变化,它允许服务器与客户端之间建立持久的连接,从而实现了数据的即时传输与交换。本文将通过问题解答的形式,深入探讨WebSocket在Python Web开发中的革新应用及其实现方法。
36 3