前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【项目实战-4】nodejs开启gzip,QPS提升6倍

【项目实战-4】nodejs开启gzip,QPS提升6倍

原创
作者头像
Nanako
发布2021-02-23 17:40:05
1.4K0
发布2021-02-23 17:40:05
举报

【问题表现】

在压测项目生产环境中,发现首页的QPS一直在8k,未达到压测目标,但压测其他接口QPS能达到5w,需要排查出问题进行优化。

首页接口压测结果:

其他接口压测结果:

【问题分析与排查思路】

  1. 梳理整个压测链路:jmeter->1个公网CLB->web接入层(Node,40台机器) 查看接入层40台机器的资源消耗情况,发现负载不高,没有压力。 查看前端平均响应时间是 20ms,但整个链路耗时1.5s,需要排查下耗时长的原因。
  2. 根据压测链路从CLB来看是否成为瓶颈,有开发提出建议,增加一个CLB看性能是否提升。

由于再增加一个CLB,需要前面加ecdn,压测链路发生改变:

ecdn(15个ip轮询)->waf->2个公网clb->web(node,40台机器)

压测结果如下:

1个公网clb->web(node,40台机器)

8.77k

ecdn(15个ip轮询)->waf->2个公网clb->web(node,40台机器)

9.11k

3. 进行后端开启gzip验证,看流量是否有降低,看cpu负载影响大小

jmeter修gzip的请求方式

压测结果如下:

每个请求的response由55.5kB缩小到9.4kB

CLB的出带宽4000Mbps缩小到750Mbps,CPU的负载由10%增加到15%

ecdn(15个ip轮询)->waf->1个公网clb->web(node,40台机器)

不开启zip

7.48k

ecdn(15个ip轮询)->waf->1个公网clb->web(node,40台机器)

开启zip

9.05k

4. 由上面的压测结果来看,jmeter开启gzip后,CLB资源消耗减少,恢复至最开始状态后,采用1个CLB进行验证。

压测链路:1个公网clb->web(node,40台机器)

压测结果如下:

1个公网clb->web(node,40台机器)

不开启zip

8.77k

1个公网clb->web(node,40台机器)

开启zip

36.01k

5. 在压测的过程中,还发现不同地区的压测集群压测结果不一致,越靠近压测环境的集群,压测的qps更高。

项目中使用广州的压测集群比北京的压测集群,压测的QPS更高。

北京集群压测结果:

【总结】

在压测前端项目中涉及到很多数据资源的传输,开启gzip压缩功能可以节省网络流量。主要分为2个部分

  • jmeter端通过在http信息头里添加名称:Accept-Encoding值: gzip
  • 服务端通过使用node中间件---compression,实现压缩功能。

本项目使用的nodejs框架,需额外关注实现gzip压缩需要使用中间件compression,一般情况下使用Apache框架是由默认配置项实现gzip功能。

在分析问题的过程中,可以采用控制变量法进行一一排查,提高问题排查效率。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【问题表现】
  • 【问题分析与排查思路】
  • 【总结】
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档