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