python - Python Asyncio 内存泄漏还是?
问题描述
我被我的 FastAPI 应用程序的内存使用问题困扰。
如果我在我的应用程序上做一些负载,例如 1 次请求/秒,一段时间,例如 2-3 分钟,我的应用程序将开始使用比 1 次请求后多 50+mb。我在这个测试中只使用了一个端点,每次调用它时它都会做同样的事情(一些使用谷歌云 ndb 的数据库调用,它在执行程序中运行它,一些使用 grpcio 的 gRPC 调用,一些使用 aioredis 的 redis 调用)
我尝试使用所有内存分析器(guppy3
, tracemalloc
, objgraph
),他们都说当我停止加载我的应用程序时我的对象数量很少,例如 tracemalloc 快照第一行
#1: /Users/ndavydov/PycharmProjects/project/.venv/lib/python3.8/site-packages/fastapi/utils.py:65: 2707.8 KiB
return response_field(field_info=field_info)
#2: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/linecache.py:137: 1922.0 KiB
lines = fp.readlines()
#3: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/abc.py:102: 1643.4 KiB
return _abc_subclasscheck(cls, subclass)
#4: /Users/ndavydov/PycharmProjects/project/.venv/lib/python3.8/site-packages/fastapi/dependencies/models.py:38: 425.2 KiB
self.path_params = path_params or []
#5: /Users/ndavydov/PycharmProjects/project/.venv/lib/python3.8/site-packages/fastapi/dependencies/utils.py:755: 310.3 KiB
BodyModel: Type[BaseModel] = create_model(model_name)
3265 other: 4269.6 KiB
Total allocated size: 14717.7 KiB
但是我可以看到我的应用程序消耗了 275 mb,并且在加载前 1-2-3 个请求之后,我看到了 190-200 mb 的内存使用量,但是在这里我只能看到 14 mb 的分配对象,这个值是t 在加载期间改变
我想知道,如果您对我可以在哪里找到问题的根源有一些想法..
解决方案
推荐阅读
- c# - 在 asp.net web 表单中传递任何值的命令对象
- excel - 如果存在,如何跨多个表和求和值列查找值?
- moodle - 如何在不刷新页面的情况下显示活动的完成状态?
- python - 如何按行计算百分比并注释 100% 堆积条
- sql - 如何在组中合并行
- ruby-on-rails - 在 Rails 中,有没有办法从rescue_from 中“短路”?
- powerbi - 添加列时如何防止RANKX重复
- macos - 通过 Catalyst 将 iOS 应用程序移植到 Mac 时如何获得访问文件的权限
- ios - 是否可以从 iPhone CMOS 传感器读取原始电压值?
- bash - 在 shell 脚本中格式化日期 YYYY-MM-DD +DAY + Mounth