实战并发测试验证gunicorn对flask的影响

简介: 实战一把gunicorn到底能不能提升性能

Python代码

p.py

fromflaskimportFlask, jsonifyfromsqlalchemyimportcreate_enginefromsqlalchemy.poolimportQueuePoolapp=Flask(__name__)
engine=create_engine(url="mysql+pymysql://root:123456@172.16.5.9:3306/demo?charset=utf8",
pool_size=20,
pool_recycle=3600*7,
poolclass=QueuePool,
echo=False)
defto_json(item):
return {
"id": item[0],
"username": item[1],
"email": item[2]
    }
@app.route("/", methods=["get"])
defindex():
data= {"msg": "", "data": []}
withengine.connect() asconnect:
result=connect.execute("select id,username,email from user")
foriteminresult.all():
data["data"].append(to_json(item))
returnjsonify(data), 200if__name__=="__main__":
app.run(host="0.0.0.0", port=7002)

NGINX配置

upstreambackend {
server 172.16.5.9:7002;
}
server {
listen 17002;
location / {
proxy_passhttp://backend;
    }
}


架构图

flask直接运行,gunicon运行flask,两者是只有一个在运行,不是同时运行



运行程序

[root@izbp152ke14timzud0du15zpool]# python3 p.py*ServingFlaskapp'p' (lazyloading)
*Environment: productionWARNING: Thisisadevelopmentserver. Donotuseitinaproductiondeployment.
UseaproductionWSGIserverinstead.
*Debugmode: off*Runningonalladdresses.
WARNING: Thisisadevelopmentserver. Donotuseitinaproductiondeployment.
*Runningonhttp://172.16.5.9:7002/ (PressCTRL+Ctoquit)


服务端负载,CPU为4核的,资源使用率5分之1吧


样本60万请求数,tps为492/sec,p90为1303ms



通过gunicorn来运行flask应用

[root@izbp152ke14timzud0du15zpool]# gunicorn -w 8 -b 172.16.5.9:7002 p:app[2021-11-0620:14:21+0800] [19426] [INFO] Startinggunicorn20.1.0[2021-11-0620:14:21+0800] [19426] [INFO] Listeningat: http://172.16.5.9:7002 (19426)
[2021-11-0620:14:21+0800] [19426] [INFO] Usingworker: sync[2021-11-0620:14:21+0800] [19429] [INFO] Bootingworkerwithpid: 19429[2021-11-0620:14:21+0800] [19449] [INFO] Bootingworkerwithpid: 19449[2021-11-0620:14:21+0800] [19486] [INFO] Bootingworkerwithpid: 19486[2021-11-0620:14:21+0800] [19504] [INFO] Bootingworkerwithpid: 19504[2021-11-0620:14:21+0800] [19507] [INFO] Bootingworkerwithpid: 19507[2021-11-0620:14:21+0800] [19508] [INFO] Bootingworkerwithpid: 19508[2021-11-0620:14:21+0800] [19509] [INFO] Bootingworkerwithpid: 19509[2021-11-0620:14:21+0800] [19511] [INFO] Bootingworkerwithpid: 19511

服务端负载,基本上已经满负载了

样本60万请求数,tps为1939/sec,p99为1114ms


在4核CPU的情况下,同环境,不同方式运行应用,tps吞吐量提示将近4倍

结论:

   通过直接运行flask,多核CPU无法充分利用资源,性能低下

   通过gunicorn运行flask,多核CPU可以充分利用,性能高效

目录
相关文章
|
9月前
|
数据采集 JSON JavaScript
Cypress 插件实战:让测试更稳定,不再“偶尔掉链子”
本文分享如何通过自定义Cypress插件解决测试不稳定的痛点。插件可实现智能等待、数据预处理等能力,替代传统硬性等待,有效减少偶发性失败,提升测试效率和可维护性。文内包含具体实现方法与最佳实践。
|
10月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
11月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
11月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
9月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
11月前
|
人工智能 缓存 测试技术
Playwright进阶指南 (6) | 自动化测试实战
2025企业级测试解决方案全面解析:从单元测试到千级并发,构建高可用测试体系。结合Playwright智能工具,解决传统测试维护成本高、环境依赖强、执行效率低等痛点,提升测试成功率,内容从测试架构设计、电商系统实战框架、高级测试策略、Docker化部署、CI/CD集成及AI测试应用,助力测试工程师掌握前沿技术,打造高效稳定的测试流程。
Playwright进阶指南 (6) | 自动化测试实战
|
10月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
1175 11
|
10月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
11月前
|
算法 测试技术 API
从自学到实战:一位测试工程师的成长之路
在技术快速发展的今天,自动化测试已成为提升职场竞争力的关键技能。本文讲述了一位测试工程师从自学到实战的成长之路,分享他在学习UI、APP和API自动化过程中遇到的挑战,以及如何通过实际项目磨炼技术、突破瓶颈。他从最初自学的迷茫,到实战中发现问题、解决问题,再到得到导师指导,逐步掌握测试开发的核心思维,并向测试平台建设方向迈进。文章总结了他从理论到实践、从执行到思考的转变经验,强调了实战、导师指导和技术服务于业务的重要性。最后,邀请读者分享自己的技术突破故事,共同交流成长。
|
11月前
|
资源调度 前端开发 JavaScript
Jest 测试实战指南
本文系统讲解如何使用 Jest 进行高效的 JavaScript 函数测试,涵盖环境搭建、测试用例编写、模拟函数与快照测试等内容,帮助开发者提升代码质量与测试效率。
397 0