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

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

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

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

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

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

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

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

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

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

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

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

时间: 2024-10-30 18:12:01

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

ECS上自建Redis服务压测报告

背景说明 最近处理的企业大客户问题中,出现好几例都是客户通过购买ECS进行自建Redis服务,并且在使用过程中碰到一些因云环境的内部限制等原因导致客户使用中碰到服务异常或者产品性能上无法满足业务需求的情况.每次处理过程都费时费力,TAM同学一直不辞辛苦的跟进,也拉动了ECS/Redis 研发,网络,存储等同学进去排查,又是抓包又是电话会议,最终可能排查下来都是因为场景使用上的不合理,导致客户在该过程用的不爽,我们支持得也累. 这里根据目前客户通常采用的Redis主备Sentinel架构模式,在E

后端服务性能压测实践

后端服务性能压测实践 标签(空格分隔): 性能 压测 后端服务 压测实践 作者:王清培(Plen wang) 背景 环境检测 压力机及压力工具检测 Linux openfiles limit 设置 排查周边依赖 空接口压测检测 聚合报告中 throughput 计算 压测及性能排查方法 关注各纬度 log Linux 常规命令 性能排查两种方式(从上往下.从下往上) 总结 背景 最近大半年内有过两次负责性能压测的一些工作.一件事情做了一次可能还无法总结出一些东西,两次过后还是能发现一些共性问题,

easy_runner一个简单的压测程序

这次再公开一个小工具 easy_runner 一个来用做压测的小工具 我主要用来做MySQL压测的时候,直接压业务端用的. 程序很简单,总共不到400来行,推荐程序员自己压测用,比LoadRunner这种重型压测工具使用起来方便多了 下载可以到 http://code.google.com/p/easy-runner/ checkout出源码来 使用说明见 http://code.google.com/p/easy-runner/wiki/Usage # 介绍 一个Python实现的简单压测工具

yanf4j 1.0-stable的一个压测报告

    采用的是jboss netty的benchmark,环境是两台linux机器,都是4核16G内存以及2.6内核,网络环境是公司内网,带宽是1Gbps,JDK1.6.0_07.对比的是mina 2.0M6和yanf4j 1.0-stable,两者都在压到16K,5000并发的时候客户端退出,因此后面给出的图有个16K的在5000并发为0,事实上只是几个连接失败,但是benchmark client就忽略了这个数据.实际过程还测试了1万并发连接的情况,但是由于测试客户端很容易退出,因此最后还

阿里10年分布式技术沉淀:阿里高可用体系核心缔造者、全链路压测创始人告诉你!

本次活动看点十足,大咖齐聚.纯正干货,下面给大家做下详解介绍,相信看后定会让你动心! 议题详情 双11核武器全链路压测--张军 / 阿里巴巴中间件高级技术专家 阿里巴巴双11备战期间,保障系统稳定性最大的难题在于容量规划,而容量规划最大的难题在于准确评估从用户登录到完成购买的整个链条中,核心页面和交易支付的实际承载能力.全链路压测的诞生改变了这一现状,通过对双11进行模拟,支持线上不影响正常用户访问的集群读写压测,获得最真实的线上承载能力数据.全链路压测开启了大促稳定性保障的新纪元,被誉为备战核

模拟演练,全链路压测!京东是如何应对双11流量高峰挑战

   [51CTO.com原创稿件]双十一电商购物狂欢节马上就要到了,相信有很多朋友跟笔者一样,早早就选好了自己心仪的产品,期待在这个促销的节日里能够花最少的钱买到自己喜欢的产品.不过,在这个万众期待的日子里,电商技术人员面临的压力可不小.那么,电商平台背后的技术工程师,是通过哪些方法和措施来保障双11流量高峰带来的挑战的.笔者近期就这一话题,采访了京东商城总架构师刘海峰先生,就京东在技术上保障双11的一些做法,进行了分享.刘海峰先生告诉笔者,今年双11备战的思路,可以用四个关健词来描述,分别是

双11备战核武器:全链路压测今年如何升级?

在刚结束的2017年双11中,阿里巴巴再一次更新了记录:每秒32.5w笔的交易创建峰值.25.6w笔的支付峰值.就是这样一个由上千个不同业务系统和技术组件构建的业务站点,在如此巨大的洪峰流量冲击之下,依旧稳如磐石,创造了一个用户体验丝般顺滑的双11购物狂欢节.这是一个互联网技术上的奇迹,堪称世界级的超级工程,而大促准备阶段的"全链路压测"就是奇迹背后的秘密. 众所周知,阿里巴巴有着非常丰富的业务形态,每一种业务形态背后都由一系列分布式的技术体系提供服务,随着业务的快速发展,特别是在双1

SolrQuery性能压测参考

大致有下面几类特征应用 一类 key-value,数据库join搬到倒排中而已, 代表应用 很大部分应用场景 一类 区间查询为主 代表应用 **** 一类 纯文本查,不存储,典型只查索引返回DB的索引id信息,代表应用 **** 一类 各种查询涵盖,facet.区间.group较多 典型代表 *** 如果应用场景相类似,已在线应用的性能或者历史压测数据具有一定的参考价值. 如果应用场景不类似,特别是有某个极端需求或者极端场景特征的话,通常需要具体测试和针对性优化. 搜索压测 性能压测需要关注:数

性能测试 PTS 铂金版来袭!阿里云发布T级数据压测的终极秘笈

无限接近真实流量的全链路压测,具备超高并发能力,多维动态支持压测场景下的多变环境,1分钟即可设置简单压测场景--这个神奇的压测"黑科技"就是PTS铂金版! 有别于PTS企业版,PTS铂金版具有完全不同的出身,说起它,不得不从阿里巴巴每年的全球剁手党狂欢-双11说起.因为和其他APM服务商不同,阿里云的压测解决方案-性能测试服务 PTS 脱胎于阿里巴巴内部平台,而这个内部平台堪称双11保障的核武器.在经过超高峰值.超高复杂度的千锤百炼后,PTS铂金版正式对外输出,让广大企业级用户能用最低