首页 > 解决方案 > 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 在加载期间改变

我想知道,如果您对我可以在哪里找到问题的根源有一些想法..

标签: pythonmemory-leakspython-asynciofastapigrpc-python

解决方案


推荐阅读