在为Y个请求提供服务后,使用X MB超出128 MB的软私有内存限制

时间:2015-11-24 14:12:42

标签: google-app-engine memory task-queue rate bucket

我的App Engine应用程序中出现了可怕的Exceeded-memory-error,它有一个Cron-job将多个小任务推送到队列中。

我认为任何单个任务都不应该触发严重错误,因此我猜测它们是以某种方式连接的;分享缺乏的记忆。 我运行队列的最大速率为4 / s,存储桶大小为5。

我如何确定以及我能做什么/应该做什么?

Exceeded soft private memory limit of 128 MB with 131 MB after servicing 18 requests total
Exceeded soft private memory limit of 128 MB with 128 MB after servicing 1933 requests total
Exceeded soft private memory limit of 128 MB with 153 MB after servicing 3697 requests total

2 个答案:

答案 0 :(得分:2)

您可以像这样监视内存实例使用情况(我假设是Python):

from google.appengine.api.runtime import memory_usage
logging.warn("Memory usage:  %d MB" % (memory_usage().current()))

您可以执行以下操作:

  1. 降低任务率。
  2. 使用内存较大的实例。
  3. 修改代码以提高效率。我最近在任务队列中遇到了这个问题,所以我把每个任务都缩小了,然后用菊花链接一个新任务来继续工作。任务完成后,垃圾收集器应立即为您清理。

答案 1 :(得分:-1)

当任务执行10分钟后,它将终止。对此的错误消息可能有些令人困惑。