1、 压测资源和场景
(1)14个接口同时压测5000并发;
(2)服务资源:采用k8s部署,总共25台8核64G阿里云机器,node节点个数22个,master3个,15个网关实例,其它应用实例10个,mysql和redis采用阿里云;
2、 压测结果
(1)通过skywalking观察发现请求通过nginx连接到网关时无法建立连接导致请求超时;
(2)下游应用服务资源还未到达瓶颈,请求都堵在了网关层被超时截断;
3、 解决方式
(1)查看了gateway的cpu和内存使用情况,都未达到瓶颈,cpu才百分之40,因此得出结论连接数不够,需要调整;
(2)修改gateway得连接数配置
spring:
cloud:
gateway:
httpclient:
pool:
#连接池类型 ELASTIC(可伸缩,默认),FIXED(固定),DISABLED(不限制)
type: fixed
#最大连接数
max-connections: 4096
# 响应超时
response-timeout: 5000
# 连接超时
connect-timeout: 3000
(3)修改后再次压测,性能得到提升且gateway得cpu和内存已经达到极限,因此调优成功;
(4)这里默认使用可伸缩,默认值得连接数等于核心数*2,如果核心数低于8则取8,所以这里最低是16个,然后弹性上升的策略可能是缓慢上升不能急速上升导致,因为压测的流量是瞬间上来,当然这个是个人理解的猜测;