迎难而上,QPS提高22+倍
简介
记录1次性能提升的经历,它最大的挑战不在于性能提升,而在于时间急,涉及的面广(比如:机房F5的SSL/TLS性能,机房互联网流量费和项目投入产出比等)。性能指标:至少支持10K QPS,10ms内服务应答,2+%的超时会被[流量方](BATJ中的一家)打低业务流量,10+%的超时封号。
背景
因EA整体的架构规划,部门A的试错尝鲜类需求被划分给部门B来实现。这是1个互联网引流的需求:[流量方]会将客户移动端的加密设备信息调用我司接口,我司需告知[流量方]这个设备是否需要看我司的广告。9.20号部门B和[流量方]做了2次性能压测,没通过:1200 QPS,60+%超时率;800 QPS,17+% 超时率。本计划9.22号上线,兼着部门A架构的我被安排进入项目。经多轮沟通分析,因该需求涉及的面比较广,需向多位部门长、CTO汇报请示,同时要向集团IT报备,再加之8天的国庆假期,最后于10.13上线该需求。
兄弟部门B的失误在于过于乐观、简单地看待了这个业务需求。通过了解生产环境现状、多轮和[流量方]&集团IT沟通后,摸清了大体的情况

现状分析
开始分析代码,以及整个链路的运行环境

解决方案
通过修改代码、变更Web容器提升单机性能,为后续横向scaling做好基础

性能压测
下图描述的主要是测试环境压测的情况。可以看出,测试环境的压测数据单机性能已经达到16+K 的QPS,但担心[流量方]的统计指标(主要是并发数)有出入,因此预估生产环境集群可以正常抗10K的QPS。在10.16日和[流量方]进行生产压测后,发现集群可以抗30K的QPS(这也是下图【3倍生产环境[流量方]实压转换比】的参考来源)。其实还可以再往上压,35K时[流量方]反馈响应耗时出现了波动,但互联网的宽带有限制,也担心机房F5的问题,同时已超额满足业务预期,就停止了生产的压测

总结
部门B确实做过一些压测,但测试目标不明确(众多的性能指标中,应该以该需求最核心的Web服务器响应耗时这个指标作为基线,来测试单台机器支持的最大QPS),测试工具不准确(当时用部门B的压测方法模拟1000 QPS,我查了下其实只有48的QPS),这也导致了上线前最后1关也就轻易的过了
另外,过于轻信了运维和安全同事他们对Openresty的压测指标(可支持80+w的QPS),测试环境压测时没有测Openresty的性能。不过还好,安全的同事心虚了,在和[流量方]生产压测前,当天下午生产环境压测了一下Openresty的性能,紧急去掉了Openresty节点。当时Openresty压测数据表明:在保证吞吐量的前提下,响应耗时只能是标准需求的接口延迟在200ms左右。关于Openresty的性能调优,或者是不是Openresty中的Lua脚本有性能问题(理论上编译型的Java会比解释型的Lua快),这又是另1个话题了
迎难而上,QPS提高22+倍的更多相关文章
- 将Web应用性能提高十倍的10条建议
导读 提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于 ...
- 王家林 Spark公开课大讲坛第一期:Spark把云计算大数据速度提高100倍以上
王家林 Spark公开课大讲坛第一期:Spark把云计算大数据速度提高100倍以上 http://edu.51cto.com/lesson/id-30815.html Spark实战高手之路 系列书籍 ...
- 将 Web 应用性能提高十倍的10条建议
提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于历史上 ...
- 使用生成器把Kafka写入速度提高1000倍
title: 使用生成器把Kafka写入速度提高1000倍 toc: true comment: true date: 2018-04-13 21:35:09 tags: ['Python', '经验 ...
- 京东iPad新品开售销量环比增22倍
一年一度万众期待的 Apple 春季发布会终于在今天凌晨揭晓,Apple 新推的 Apple News.Apple Card.Apple Arcade 和 Apple TV+ 四大软件服务惊喜不断,随 ...
- 【转】Vim速查表-帮你提高N倍效率
Vim速查表-帮你提高N倍效率 转自:https://www.jianshu.com/p/6aa2e0e39f99 去年上半年开始全面使用linux进行开发和娱乐了,现在已经回不去windows了. ...
- 一行代码让python的运行速度提高100倍
python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差. “一行代码让python的运行速度提高100倍”这绝不是哗众取宠的 ...
- 一行代码让你的python运行速度提高100倍
转自:https://www.cnblogs.com/xihuineng/p/10630116.html 加上之后运行速度快了十倍,我的天呐. python一直被病垢运行速度太慢,但是实际上pytho ...
- 使用 PyTorch Lightning 将深度学习管道速度提高 10 倍
前言 本文介绍了如何使用 PyTorch Lightning 构建高效且快速的深度学习管道,主要包括有为什么优化深度学习管道很重要.使用 PyTorch Lightning 加快实验周期的六种 ...
随机推荐
- IIS实现Nginx功能:转发
这个标题本身是不合理的,但是基于目前公司有一份系统是外部代理商贴牌使用,有一个老的站点是部署在IIS上,好多代理商自己的域名绑定在这个上面,而近期新版本的系统已经上线,那么需要将这些域名也转发到新的站 ...
- pytest测试框架 -- setup和teardown等
一.用例运行级别 1.函数级别(setup.teardown 或 setup_function.teardown_function): 仅对处于同作用域的测试函数有效(该函数定义不在类中,则对非类中测 ...
- nginx安装步骤和加固方案
安装步骤参考https://blog.csdn.net/qq_37345604/article/details/90034424 出现以下页面就表示安装完成(默认是80端口,我修改成了8009端口,所 ...
- 突然虚拟机无法联网解决办法,且报错Failed to start LSB: Bring up/down
使用sudo service network restart去启动网络时起不来 使用systemctl status network.service查看网络状态也是failed,且报错Failed t ...
- 必应API接口nodejs版
近期,在研究百度.必应.API等的url提交API时,发现有用Go语言做工具的大佬的分享 利用 API 自动向搜索引擎提交网址(Go语言版) - pyList. 其中提到bing API提交方法,并给 ...
- Python爬虫实战练习:爬取美团旅游景点评论数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 今年的国庆节还有半个月就要来了,相信很多的小伙伴还是非常期待这个小长假的.国庆节是一年中的小 ...
- Mysql数据分片技术(一)——初识表分区
1. 为什么需要数据分片技术 2. 3种数据分片方式简述 3. 分片技术原理概述 4. 对单表分区的时机 1为什么需要数据分片技术 数据库产品的市场 在互联网行业内,绝大部分开发人员都会遇到数据表的性 ...
- 1.7Hadoop-HDFS命令
- TKE 集群组建最佳实践
Kubernetes 版本 Kubernetes 版本迭代比较快,新版本通常包含许多 bug 修复和新功能,旧版本逐渐淘汰,建议创建集群时选择当前 TKE 支持的最新版本,后续出新版本后也是可以支持 ...
- 朴素版和堆优化版dijkstra和朴素版prim算法比较
1.dijkstra 时间复杂度:O(n^2) n次迭代,每次找到距离集合S最短的点 每次迭代要用找到的点t来更新其他点到S的最短距离. #include<iostream> #inclu ...