下午七点十一分,才把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小时。
我在等一个可能永远不会来的崩溃。
也在等天亮。
(完)

Comments NOTHING