如何诊断Google App Engine烧瓶内存泄漏

时间:2019-09-19 18:36:51

标签: python google-app-engine flask

我正在运行一个Google App Engine应用程序(Flask应用程序),该应用程序似乎存在内存泄漏。请参见下面的内存使用图。内存使用率会不断攀升,直到达到极限,然后关闭实例并启动一个新实例。

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

我添加了一个端点,该端点使用tracemalloc软件包获取内存快照,并将其与上一个快照进行比较,然后将输出写入Google Cloud Storage。

我在报告中没有看到任何指示内存泄漏的信息。记录的峰值内存使用量约为0.12 GiB。

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

关于如何诊断此病或可能由什么引起的任何想法?

enter image description here

1 个答案:

答案 0 :(得分:1)

遇到这种情况可能有很多原因。您的应用正在创建临时文件吗?临时文件可能是导致内存泄漏的原因。也可以从错误或警告中创建临时文件。首先,我将检查我的Stackdriver日志中是否有错误和警告,然后尝试对其进行修复。

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

您可以做的另一件事是研究函数中使用内存的方式。为此,您可以使用一些不错的工具,例如PymplerHeapy。使用这些工具可能会为您提供有关问题所在的宝贵线索。