迎难而上,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 加快实验周期的六种 ...
随机推荐
- python appium app ui 自动化
1.下载Android-SDK.夜神安卓模拟器.Appium.adb命令执行包并配置环境变量 2.打开夜神 3.打开Appium进行配置,配置如下 4.启动命令,到夜神bin目录下执行 adb con ...
- CSS -- 盒子模型之边框、内边距、外边距
一.使用border为盒子添加边框 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 1.border-style(边框样式)常见样式有: dashed( ...
- Linux服务器内存监控—每小时检查&超出发送邮件&重启占用最高的Java程式
简介与优点 使用该脚本能自行判断系统内存使用情况是否超出设定百分比 能在超出预警值时执行重启程式的操作 能记录重启过程,并将具体LOG邮件发送给指定收信人 可以设定Crontab排程,达成每隔一段时间 ...
- Devops实战(一)Docker的部署安装以及Docker-Compose的使用
Docker的部署安装以及Docker-Compose的使用 1.docker和docker-Compose简介 Docker是一组平台即服务(PaaS)产品,它们使用操作系统级虚拟化以称为容器的软件 ...
- Python-IndexError: list index out of range
Error:IndexError: list index out of range Where? 对Python中有序序列进行按索引取值的时候,出现这个异常 Why? 对于有序序列: 字符串 str ...
- Linux 的shell指令
------十六进制查看文件 ------ ls 命令 ---- cp ----- chmod
- 使用SSM框架实现图片的上传
SSM实现图片上传功能 效果 在前端页面点击上传图片功能按钮,即弹出文件管理器,选择图片并上传: 思路 在前端页面添加 input 标签,type选择file. 在后端controller编写方法. ...
- JAVA运行环境 和 Java Applet的运行环境 的区别
Java小程序,也就是Java Applet,可以在Web浏览器中运行.Java Applet必须以<applet>脚本的形式嵌入到HTML页面中,才能在web浏览器中运行. 之前总以为本 ...
- JavaScript格式化返回当前日期和时间
要求: 返回当前日期和时间,如 2020年10月06日 星期二 下午08点15分35秒 代码实现: function getDate() { var date = new Date(); var ye ...
- kalilinux2020.3的安装与一些坑
1.下载镜像文件.iso kali官方下载太慢,用一些魔法也是不行,这里推荐用国内的下载源. 阿里云: https://mirrors.aliyun.com/kali-images/?spm=a2c6 ...