小爸爸 发表于 2017-6-28 09:58:35

怎样正确做 Web 应用的压力测试?

“大家一般如何做压力测试?比如怎样判断一个应用的承受能力,在到达何种程度时需要增加服务器? 请大家讲一下经验~”
看到这个问题想来回答一下

一个完整的压力测试需要关注三个方面:如何正确产生压力、如何定位瓶颈、如何预估系统的承载能力
(1) 首先说一下如何产生压力,产生压力的方法有很多,通常可以写脚本产生压力机器人对服务器进行发包和收包操作,也可以使用现有的工具(像jmeter、LoadRunner这些),所以说产生压力其实并不难,难点在于产生的压力是不是真实地反映了实际用户的操作场景。举个例子来说,对游戏来说单纯的并发登陆场景在整个线上环境中的占比可能并不大(新开服等特殊情况除外),相反“登陆-开始战斗-结束战斗”、不同用户执行不同动作这种“混合模式”占了更大的比重。所以如何从实际环境中提炼出具体的场景比重,并且把这种比重转化成实际压力是一个重要的关注点。
(2) 产生压力之后,通常我们可以拿到TPS、响应时延等性能数据,那么如何定位性能问题呢?TPS、响应时延只能告诉你服务器是否存在问题,但不能帮助你定位问题。这些表面背后是整个后台处理逻辑综合作用的结果,这时候可以先关注系统的CPU、内存、IO、网络,对比在tps、时延达到瓶颈时这些系统数据的情况,确定性能问题是系统哪一部分造成的,然后再回到代码的逻辑中逐个优化这些点。
(3) 当服务器的整体性能就可以相对稳定下来,这时候就需要对自己服务器的承载能力有一个预估,通过产生真实压力、对比系统数据,大致可以对单套系统的处理能力有个真实的评价,然后结合业务规模配置服务器数量。

总结一下:通过产生真实压力来发现问题、结合系统性能来解决问题
欢迎大家来讨论

jingzizx 发表于 2017-6-28 10:54:29

:victory:

草帽路飞UU 发表于 2017-6-28 17:27:56

压力测试的目标,是搞死服务器,从而找到瓶颈点,如果搞不死,意义就不大

乐哈哈yoyo 发表于 2017-6-28 17:28:47

testcomplete,loadrunner,这些只是工具。
1、了解被测试应用的协议,
2、了解被测系统的组成,
3、编写压力测试脚本,
4、生成压力
5、监控系统
6、收集并分析数据
7、得出结论

八戒你干嘛 发表于 2017-6-28 17:29:54

jmeter+badboy再外加一个自己写的monitor监控,用起来还比较顺手,主要就是用来做web压力测试

悠悠小仙仙 发表于 2017-6-28 17:30:37

要做压力测试,首先要选择好工具,俗话说:“工欲善其事,必先利其器”
页: [1]
查看完整版本: 怎样正确做 Web 应用的压力测试?