繁体   English   中英

如何诊断 Google App Engine Flask Memory 泄漏

[英]How to diagnose Google App Engine Flask Memory Leak

我有一个正在运行的 Google App Engine 应用程序(Flask 应用程序),它似乎有 memory 泄漏。 请参阅下面的 memory 用法的 plot。 memory 的使用量不断攀升,直到达到限制并且实例关闭并启动一个新实例。

这是一个简单的 API,大约有 8 个端点。 它们都没有处理大量数据。

我添加了一个端点,该端点使用 tracemalloc package 获取 memory 快照,并将其与上一个快照进行比较,然后将 output 写入 Google Cloud Storage。

我在报告中没有看到任何表明 memory 泄漏的内容。 峰值 memory 使用记录为约 0.12 GiB。

我还在每个端点调用的每个 function 的末尾调用 gc.collect() 。

有关如何诊断此问题或可能导致此问题的任何想法?

在此处输入图像描述

遇到这种情况可能有很多原因。 您的应用程序是否在创建临时文件? 临时文件可能是导致 memory 泄漏的原因。 临时文件也可以从错误或警告中创建。 首先,我会检查我的 Stackdriver 日志是否有错误和警告,然后我会尝试修复它们。

您的应用程序是否与数据库或存储桶交互? 一些 memory 相关问题可能与您的应用程序与任何数据存储服务的不良交互有关。 此处也遇到了此问题,并通过处理 Google Cloud Storage 错误得到缓解。

您可以做的另一件事是调查一下 function 中使用 memory 的方式。 为此,您可以使用一些不错的工具,例如PymlerHeapy 使用这些工具可能会为您提供有关问题所在的宝贵线索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM