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

狂天 · 23 天前 · 最后由 小狄子 回复于 19 天前 · 4075 次阅读

背景:
我们有两个测试环境,一个是开发环境,一个是 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 占用率激增,这点可以查查。
这三点大概是我下周一的工作方向(为了提升开发环境性能)。
想问下各位大佬有没有什么想法指点一二。

最佳回复
狂天 #1 · 19 天前 Author
辣子鸡 #7 回复

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

共收到 10 条回复 时间 点赞

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

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

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

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

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

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

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

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

狂天 #1 · 19 天前 Author
辣子鸡 #7 回复

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

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

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

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