【问题标题】:Google App Engine Timeout running a Java Program运行 Java 程序的 Google App Engine 超时
【发布时间】:2015-12-10 04:14:53
【问题描述】:

我正在 GAE 中运行优化程序。该程序在我的笔记本电脑/eclipse 上运行,可能需要 6-10 分钟才能运行。似乎 GAE 有 60 秒的超时并抛出 500 错误。

如何增加 GAE 的内存需求?您如何将超时要求增加到 10 分钟以上?有什么我可以在 Eclipse 的 GAE 设置中做的事情,还是我必须与 Google 取得联系。

【问题讨论】:

    标签: google-app-engine timeout


    【解决方案1】:

    我赞同@PatrickGray 的回答。

    相关说明:在GAE上实际执行的时间往往比在开发服务器上要长,所以不要以本地执行时间作为参考。

    为了增加内存需求 - 您可以根据需要配置 the module's instance class(当然会涉及成本)。

    【讨论】:

      【解决方案2】:

      我之前在 Google App Engine 中遇到过这个错误。你不能增加超时时间,这是一个硬限制。我推荐延迟库或使用任务队列。以下是我解决问题的方法(在 Python 中):

      How do I return data from a deferred task in Google App Engine

      【讨论】:

      • Task 是一个不错的选择,但它对自动扩展的实例有 10 分钟的限制。
      • 他说他的执行时间上限是 10 分钟。我不同意您的回答,但我认为他在 HTTP 请求中进行所有处理,这从一开始就是糟糕的设计。诚然,我一开始犯了这个错误,但后来转而使用 deferred/task 库,而不是让用户在 HTTP 请求中等待。
      • 问题明确指出“超过 10 分钟”。使用任务很重要——我不反对。
      • appengine 现在支持此答案提供的更多选项,在其他答案中有所介绍。
      • 感谢@Patrick 的建议。请参阅我对安德烈的回答的回复。我现在在部署的服务器上遇到 Java 堆空间问题(java.lang.OutOfMemoryError:Java 堆空间)。无论如何在引擎执行期间增加它。
      【解决方案3】:

      我假设您不需要此程序的自动扩展实例。 basic or manual scaling 的实例为您提供完成任务所需的尽可能多的时间。

      【讨论】:

      • 感谢@Andrei 的建议。在尝试其他方法之前,我尝试将其设置为基本缩放 (B8) 并设置 15 分钟超时。这次应用引擎在发送 500 错误之前运行了 8 分钟。我查看了(开发人员控制台)中的日志,发现引擎用完了 Java 堆空间。自 B8 以来,1024 Mb 是提供的最大值。对此是否有替代建议。该引擎是一个优化调度引擎,所需的时间和堆空间将取决于问题的大小和复杂性。
      • 在不了解细节的情况下很难给出建议,但如果内存是限制,您可以使用 Memcache - 甚至 Datastore - 在处理过程中存储数据。如有必要,您可以获得许多 GB 的专用 Memcache。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 2013-12-20
      • 2016-03-11
      相关资源
      最近更新 更多