性能常识 如何提升测试环境性能?

狂天 · 2025年05月16日 · 最后由 小狄子 回复于 2025年05月21日 · 4339 次阅读

背景:
我们有两个测试环境,一个是开发环境,一个是 UAT 环境。
有一批客户要看演示,所以领导要求我们对开发环境进行小规模压测,看看能不能抗住这些客户的使用。
开发环境是个老环境,又老又慢。为什么不用 UAT,它虽然快但废弃太久,跟开发环境版本差太多,要做重新部署,要能正常使用不知道猴年马月。

开始压测:
没办法只能选开发环境了,我着手开压,果不其然,用客户的数量(10 人)一压服务就死了。
我往下减人,发现 7 人并发服务可以正常运行。
于是开始想怎么把 7 人并发提高到 10 人。
先去找开发,开发说我们代码没问题,UAT 之前哐哐压测也没出过问题,让我找运维扩容。
我先定位了接口对应的服务,然后找运维看该服务的配置,一看 15G,真不多,让他们加到 32G。
加完我信心满满再次开压,结果还是直接就崩。
我又想可能是 CPU 的问题?于是我在开压的时候观察服务 CPU 的使用率,压测前 5%,压测时直接飙升到 300%。
但是呢,到 300% 之后瞬间又降回 5%。
我的判断是服务 CPU 干到 300% 时,直接把服务干成假死状态。
一假死就不消耗 CPU 了,所以马上恢复到 5%。
随后运维帮我把 CPU 从 3 核升到 4 核,还是崩。

服务性能提升失败:
这下运维蒙了,我也蒙了。
因为我理解扩容也就是内存和 CPU 吧,都加了,可服务的承受并发量还是没有增加。
那问题可能出在哪呢?
我认为有两种可能,第一是代码 BUG,第二是服务配置低。
先说代码,7 人并发是可以的,也就是说功能是可以正常运行的。
所以我更倾向于 2,也就是服务配置。

那有哪些原因导致慢?
1.我们用的是本地服务器,也有几年了,我怀疑硬件可能有老化这是一个原因,所以应该找些 LINUX 上能用的跑分软件跑下硬件性能。
2.是运维加的内存虽然看上去加了,但是服务中是否真的增加了,这个我没确定。
3.服务中的是否有其他进程占用,最主要的,代码运行时哪些代码使 CPU 占用率激增,这点可以查查。
这三点大概是我下周一的工作方向(为了提升开发环境性能)。
想问下各位大佬有没有什么想法指点一二。

最佳回复
辣子鸡 回复

最终是开发的问题,数据库连接数设置的 7,给扩大就好了。

共收到 10 条回复 时间 点赞

"代码运行时哪些代码使 CPU 占用率激增" 跑个火焰图
考虑 按照 操作系统维度监控 -> 应用程序维度监控 来分析,逐步找原因

7 人并发时,cpu 占用多少有看下吗

二楼的说的对,先在 7 人并发时看下 cpu、内存、网络输入输出,再就是往开发环境中间件上排查,最后往代码中执行 sql 上去排查,是不是存在慢 sql、死锁等问题

给我看笑了,你们啥业务 7 个人都带不起,是给 7 个蜘蛛侠演示爬数据吗

不可能是代码 BUG 吧,要是是代码 BUG ,线上不是早就炸了,看下是什么代码类导致的 CPU 激增吧

可以安装个链路追踪工具或者火焰图,以及查看日志解决

解决了吗,我也好奇是啥问题

我觉得这里的 7 个人并发不等于 7 个用户同时在线, 实际上每个用户不会每秒都在发请求。 最好是看下具体的 TPS 相关的数据来参考。
另外,不是很理解为什么有个更快的 UAT 环境会被废弃呢? 我会倾向于开发环境是给开发自测的, 测试就得在 UAT( 我们的测试也更靠近 UAT 这个阶段)

辣子鸡 回复

最终是开发的问题,数据库连接数设置的 7,给扩大就好了。

狂天 关闭了讨论 05月21日 10:56
狂天 重新开启了讨论 05月21日 10:56
狂天 回复

啊?一般不都是连接池么,连接不复用嘛,好奇是什么架构什么技术栈

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册