JMeter压力测试实用技巧|软件性能测试高频面试题汇总

阿木 发布于 6 小时前 2 次阅读


下午七点十一分,才把nmon的监控图表从服务器上面拽取下,同事们都已经离开,机房里冷气发出嗡嗡的响声,屏幕之上的CPU曲线,在今夜陪伴我加班的唯有它。

说实话。

干了五年性能测试,最难回答的从来不是“TPS掉了怎么办”。

产品经理盯着你发问:“这26个小时跑下来呀,究竟给公司省下了多少金额呢?”。

注册用户数≠并发数

第一次带新人。

彼时,她针对需求文档进行了良久的计算,而后说道:“每日活跃用户高达50万,遵循二八原则,如此算来,并发量最少5万。”。

我没拦她。

那天测试环境直接把开发机房搞瘫了。运维大哥提着键盘来骂人。

后来她才知道。日活和并发,中间隔着十万八千里。

真实场景里,大部分人都在划水。浏览、发呆、去倒水。

真正在点按钮的,永远是少数 。

小标题:车联网的升级接口为啥半夜崩过

我们项目。

车机半夜三点自己偷偷下载升级包。

后台一看,好家伙,响应时间飙到4秒。

CPU没满。内存没爆。

后续发觉原来是千兆网卡将一百二十四点五兆字节跑满了,带宽的棺材板被死死盖住了。

那周我把nmon的网卡监控加粗标红。

老板问:这算什么贡献?

我说:帮公司省了买新服务器加带宽的钱,大约二十万。

他不说话了。

小标题:1500个并发把我按在地上摩擦

去年做新版本。

查询接口,指标写着“响应时间<1s”。

结果跑到1500并发,直接干到3.2秒。

开发拍桌子:环境问题!

我回:索引。

他不信。

我把慢查询日志甩他桌上,三个核心表,索引全建歪了。

重建那天,响应时间掉到800ms。开发不吭声了。

这事后来写进汇报PPT,标题叫《不花钱的性能优化》 。

拐点。那个该死的拐点

其实最折磨人的不是瓶颈。

是你明知道拐点就在那儿,但怎么也摸不准。

梯度加压。

从50到100到150。

TPS起初蹭蹭涨,像年轻人刚入职。

突然。涨不动了。

再压。响应时间开始往上窜。TPS趴在地上装死。

就是这里了。最合理的并发数 。

我每次找到这个点,都会在笔记本画个圈。

像给尸体量体温。

小标题:黑盒插件吃掉45%CPU

上个月看了一篇文章,到现在还在后怕。

说有个网关,CPU无缘无故爆到100%。

看了半天的perf,仅仅瞧见一个名为pkey_rsa_decrypt的C函数在激烈地不停转动。

但谁调了它?不知道。

像知道有人在你家厨房偷吃,但监控只拍到一只手。

后来用动态追踪,才揪出来——一个第三方黑盒插件,第93行。

就一行Lua。

一行代码吃掉45%的CPU

我们项目里有没有这种代码?

我不敢想。

小标题:压力机那根破网线

有一回压测死活上不去。

TPS卡在800,像便秘。

查服务、查DB、查中间件。什么都没问题。

最后蹲下来看了一眼压力机。

办公室共用百兆交换机。 网线还是五类线。

旁边同事在看爱奇艺 。

那一刻我特别想笑。

性能瓶颈,有时不在服务器。在那根十几块钱的水晶头。

小标题:验证码屏蔽了,但脚本还在找它

新人问过:

“老师,验证码不是屏蔽了吗?为什么回放报404?”

我让他打开脚本。

里面躺着一个GET /captcha.jpg

屏蔽的是后端逻辑。 录制时顺手牵羊的请求,还赖在脚本里。

他删了那一行。世界安静了。

做性能测试的人,有时候得学会给脚本做减法

给决策层看什么

他们不关心JVM参数,不关心连接池大小。

他们只想知道:

——系统崩不崩?

——用不用加机器?

——要花多少钱?

所以我后来把报告改了。

删除包含“线程数200”的内容,替换为“支撑单日1000万请求,零加机器”。

老板开始点头了。

小标题:压力测试是马拉松,不是百米冲刺

负载测试十分钟能找到拐点。

稳定性测试,得跑26小时。

前8小时,一切正常。

12小时,内存曲线开始锯齿状波动。像人心跳。

18小时,GC频率翻倍。

22小时,某个服务静悄悄死了。

没人知道它是什么时候断气的 。

那些记不住的具体步骤

其实很多细节我都忘了。

只记得当时拿着top命令,找到一个pid。

CPU 98%。

开发说不可能,他代码没循环。

然后发现是正则每请求编译一次。

加了一行缓存配置。CPU掉到67%。

他走的时候没道谢。第二天工位多了杯咖啡 。

最怕的不是报500

是服务器返回200,业务返回失败。

你盯着聚合报告,成功率99.99%,心跳如鼓。

那0.01%的错误率,全是钱。

超卖的订单、发不出的券、扣款成功但提示失败的投诉 。

性能测试从不测业务正确性。

但它放过的每一个错误,都可能在双十一捅娄子。

什么时候做性能测试

很多人以为,最后一轮功能测试完。

其实越早越好

单接口基准测试,在功能没封板就能跑。

那时候发现问题,改代码成本最低。

等UI冻结了再去测索引,开发会骂你为什么不早点说。

左移。

这两个字写在便签上,贴我显示器边框。

压力机集群那点事

配置是改配置文件。

把所有压力机IP写进去,主机发令,远程开火。

听起来很高级。

其实第一次配,我把IP写错了一位。

沉默得仿若石头般的五台压力机。我身处会议室,对着投影,汗流了足足十分钟。

晚上七点半。机房。

灯一盏盏灭了。

画面处于被监控的状态,并且呈现出亮着的情形,TPS稳定在了被称作3000的那条线,如同心电图一般,以此来证明系统处于仍然存活的状况。

车联网的注册接口今晚压到第22个小时。

内存71%。

还差4小时。

我在等一个可能永远不会来的崩溃。

也在等天亮。

(完)