首页 > 解决方案 > 内存泄漏调试 - 在 Heroku 上运行的 Python 脚本

问题描述

我正在运行一个通过简单的 Flask 应用程序调用的 python 脚本。我在 Heroku 上运行它。这是工作流程 - 在 Flask 应用程序中调用 URL 会使用 asyncio 触发 python 脚本(这是让 Flask 请求在触发脚本后正常返回所必需的。脚本继续执行几个小时

现在,当我检查 Heroku 上的日志时,内存不断增加。我在脚本中使用了 tracemalloc,发现内存使用量是平稳的。但是当我监控 Heroku 日志时,内存不断增加。

这是 Tracemalloc 显示的内容。下面是消耗内存的组件。这是 16 MB,并且不会超出此范围

最高内存使用量:/app/.heroku/python/lib/python3.8/site-packages/googleapiclient/schema.py:302: size=16.3 MiB, count=241, average=69.3 KiB

但这是 Heroku 日志的内存消耗

ource=web.1 dyno=heroku.213294961.fb70dc87-b41e-4201-8ae4-30afe715a932 sample#memory_total=349.32MB sample#memory_rss=347.13MB sample#memory_cache=2.18MB sample#memory_swap=0.00MB sample#memory_pgpgin=195178pages sample #memory_pgpgout=108308 页样本#memory_quota=512.00MB

这已从 200 MB 增加到 350 MB(2 小时内增加 150MB)

调试此问题的最佳方法是什么?任何指示都会有所帮助

标签: pythonpython-3.xherokumemory-leakstracemalloc

解决方案


推荐阅读