专栏首页云原生压测团队【项目实战-4】nodejs开启gzip,QPS提升6倍
原创

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

【问题表现】

在压测项目生产环境中,发现首页的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功能。

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【必看】社区文章目录

    Nanako
  • ASP.NET Core 性能对比评测(ASP.NET,Python,Java,NodeJS)

    前言 性能是我们日常生活中经常接触到的一个词语,更好的性能意味着能给我们带来更好的用户体检。比如我们在购买手机、显卡、CPU等的时候,可能会更加的关注于这样指标...

    逸鹏
  • 互联网常见架构接口压测性能分析及调优手段建议

    常见的互联网架构中,一般都能看到spring+mybatis+mysql+redis搭配的身影,在我所服务的公司亦是如此。一般来说,应用内部的接口都是直接调用的...

    lyb-geek
  • 复盘node项目中遇到的13+常见问题和解决方案

    笔者之前陆陆续续接手过几个nodejs项目, 也参与过几个有点意思的nodejs开源项目, 最近把其中遇到的一些问题和解决方案做一个梳理, 避免大家继续踩坑. ...

    徐小夕
  • 如何评估、预测系统的QPS

    当我们在设计一套系统的时候,我们要考虑好系统的架构设计、模块划分、技术方案选型、还有系统性能如能够承受的QPS。当我们线上系统能够支撑10W QPS的时候,我们...

    Allen.Wu
  • 性能框架哪家强—JMeter、K6、locust、FunTester横向对比

    经过了之前的铺垫:性能测试框架对比初探,目前留下来的几个测试框架就是「JMeter」、「K6」、「locust」和「FunTester」。本次测试目的是对比几种...

    FunTester
  • vue-cli#2.0 webpack 配置分析

    目录结构: ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-c...

    用户1197315
  • 008.Nginx静态资源

    Nginx作为静态资源Web服务器部署配置, 传输非常高效, 常常用于静态资源处理,请求以及动静分离。通常非服务器动态运行生成的文件属于静态资源。

    木二
  • nginx-1:生产级别nginx高性能配置

    笔者在github提供了完整的配置文件,同时包含代理基础组件的conf,这些基础组件都是部署在容器里,通过ingress-nginx暴露到外部,然后在通过ngi...

    千里行走
  • 服务器小白的我,是如何将 node+mongodb 项目部署在服务器上并进行性能优化的

    本文讲解的是:做为前端开发人员,对服务器的了解还是小白的我,是如何一步步将 node+mongodb 项目部署在阿里云 centos 7.3 的服务器上,并进行...

    夜尽天明
  • 构建用于生产的React静态化单页面服务 原

    React 作为一项热门的前端开发技术,现在使用它的团队越来越多。之前也介绍了react 的所有的特性,但是仅仅了解怎么开发 react 只走了万里长征的第一步...

    随风溜达的向日葵
  • 迎接重生,微盟数据库全面上云纪实

    在经历了惨痛的黑天鹅事件以及激烈的数据恢复过程后,作为微盟DBA的我们进行了深刻的反省和自查,作为公司的核心资产,数据库也得到了前所未有的重视。如何保证数据安全...

    腾讯云数据库 TencentDB
  • 使用Firefox Send搭建一个临时文件分享系统

    说明:Firefox Send好像一两年前博主就分享过,是Firefox推出的一個全新的临时文件分享系统,具体查看→传送门,不过貌似代码开源了,也有几个小伙伴搭...

    子润先生
  • 都是事件驱动,为什么Nginx的性能远高于Redis?

    谈到Redis缓存,我们描述其性能时会这么说:支持1万并发连接,几万QPS。而我们描述Nginx的高性能时,则会宣示:支持C10M(1千万并发连接),百万级QP...

    陶辉
  • 都是事件驱动,为什么Nginx的性能远高于Redis?

    谈到Redis缓存,我们描述其性能时会这么说:支持1万并发连接,几万QPS。而我们描述Nginx的高性能时,则会宣示:支持C10M(1千万并发连接),百万级QP...

    陶辉
  • Presto在滴滴的探索与实践

    桔妹导读:Presto在滴滴内部发展三年,已经成为滴滴内部Ad-Hoc和Hive SQL加速的首选引擎。目前服务6K+用户,每天读取2PB ~ 3PB HDFS...

    用户6543014
  • Node应用的进程管理器: PM2详细介绍

    这里的PM2,不是PM2.5,跟空气没有半毛钱的关系。它是NodeJs应用的进程管理器,可以利用它来简化很多Node应用管理的繁琐任务,如性能监控、自动重启、负...

    Javanx
  • UI前端同学回来抢经验,react native开发实战五部曲的实战与锤炼,咬牙学完保证变大牛!

    背景 现在很多移动项目全都专项纯rn开发,对于rn的应用趋势不言而喻,学习一些rn的语法并不是十分困难,但是如何在项目中灵活运用,增加实战项目经验,这还是比较困...

    企鹅号小编
  • 「简明性能优化」双端开启Gzip指南

    在 http/1.0 协议中关于服务端发送的数据可以配置一个 Content-Encoding 字段,这个字段用于说明数据的压缩方法

    前端劝退师

扫码关注云+社区

领取腾讯云代金券