达到内存限制启动任务

时间:2015-06-23 21:25:54

标签: java google-app-engine

我的App Engine应用程序需要运行很长的任务,需要大量的数据存储来计算。它适用于少量数据,但从昨天起,我突然每天要计算超过一百万个数据存储条目。在运行任务一段时间后(大约2分钟),它失败并返回202退出代码(HTTP错误500)。我真的无法处理这个问题。它几乎没有记录。我能找到的唯一信息是它可能意味着我的应用程序内存不足。

任务很简单。数据存储区中的每个条目都包含一个非唯一字符串标识符和一个长整数。任务将数字相加并将标识符存储到集合中。

由于我的应用完全免费且没有广告,因此我的预算非常低。我想防止应用程序成本飙升。我想找到一个廉价而简单的解决方案。

编辑: 我今晚彻底阅读了Objectify文档,我发现the session cache(确保实体引用一致性)会占用大量内存,并且在执行大量请求时应该定期清除(这是我的情况)。不幸的是,这没有帮助。

1 个答案:

答案 0 :(得分:0)

可以保持在免费配额范围内,但这需要额外的工作。

在您的情况下,您应该将此操作拆分为较小的批次(ej每批处理1000个实体),并将这些较小的任务排队以在非工作时间顺序运行。这应该可以节省您的内存问题,并允许您扩展到当前实体数量之外。