如何在达到OutOfMemoryError之前启动新的GAE实例

时间:2013-01-20 18:31:21

标签: java google-app-engine

我们如何避免OutOfMemoryError异常?

App Engine调度程序根据响应时间启动实例,但是当现有实例超出其内存配额时,我们需要启动新实例。

我们的GAE实例处理不同文件大小的多个并发上传请求。每当实例处理过多的并发上载(使用堆空间复制上传的字节)时,实例就会崩溃java.lang.OutOfMemoryError:Java堆空间。

我们已经看到其他帖子建议使用具有更多内存或使用后端的实例类。 但我们是否必须转向后端以避免这种情况?或者是否有一种方法可以鼓励普通GAE实例调度程序不向内存限制附近的实例发送新请求?

1 个答案:

答案 0 :(得分:1)

请改用blobstore upload handler。上传首先通过blob上传处理程序剥离blob数据并将其保存到blobstore,然后调用处理程序(并传递保存的blob密钥和其他请求数据)。

这有两个好处:

  1. 您的前端不涉及处理blob数据,因此不会产生OOM错误。

  2. 上传量可能超过32Mb,否则会限制所有前端请求。