什么是"软私人内存限制"在GAE?

时间:2012-02-17 16:08:03

标签: python google-app-engine memory-management python-2.7

我的应用程序的用户尝试使用我的应用程序将文件作为电子邮件附件发送。但是,这样做引发了以下异常,我无法解密

Exceeded soft private memory limit with 192.023 MB after servicing 
2762 requests total

While handling this request, the process that handled this request was
found to be using too much memory and was terminated. This is likely to
cause a new process to be used for the next request to your application.

If you see this message frequently, you may have a memory leak in 
your application.

什么是“软私有内存限制”以及可能导致此异常的内容?

2 个答案:

答案 0 :(得分:23)

“软私有内存限制”是App Engine阻止实例接收任何更多请求,等待任何未完成请求以及终止实例的内存限制。当你使用太多内存时,可以把它想象成一个优雅的关闭。

偶尔达到软限制是可以的,因为您的所有请求都应该完成。但是,每次发生这种情况时,您的下一个请求都可能会启动一个可能会对延迟产生影响的新实例。

答案 1 :(得分:20)

我假设您使用的是最低级别的前端或后端实例。 (F1或B1类)两者都有128 MB内存配额,因此您的应用程序很可能超过此配额限制。但是,这个配额似乎没有严格执行,谷歌对此有一些宽容(因此术语soft limit),我有几个F1应用程序实例在被App Engine终止之前消耗了大约200MB的内存。 / p>

尝试将实例类增加到具有256MB内存配额的下一个更高级别的类(F2或B2),并查看是否重新发生错误。此外,每次发送带附件的电子邮件时,请检查错误是否可重现。因为您所看到的可能是症状而非原因,并且您的应用程序中消耗大量内存的部分位于其他位置。