【发布时间】:2018-12-07 17:37:27
【问题描述】:
我有一个关于在处理大量任务时在 App Engine 上收到的任务失败消息的问题。
错误如下:
在等待太长时间以尝试为您的请求提供服务后请求被中止。
我的服务配置如下:
<threadsafe>false</threadsafe>
<runtime>java8</runtime>
<system-properties>
<property name="appengine.api.urlfetch.defaultDeadline" value="${urlfetch.deadline.override}"/>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
<instance-class>F2</instance-class>
<automatic-scaling></automatic-scaling>
在我的代码中,我想运行一个并发操作,所以我启动了许多任务来同时运行。问题是,有时我可能会收到显示的错误,因为没有太多实例准备好处理我的调用,并且当一个请求超过它可以留在队列中的最长时间时,它就会死掉。
您对如何处理这种情况有什么建议吗?将min-pending-latency 设置为高值可以在这件事上产生积极的影响?
谢谢你的帮助:)
【问题讨论】:
-
你对应的任务队列配置是什么?
-
你能确定“太长”的真正含义吗?也许在请求中添加一个应用程序日志,将任务排入队列并检查从该任务到出现上述错误的时间增量?
-
在您的示例
appengine-web.xml中,您使用<threadsafe>false</threadsafe>并同时使用并发。根据this doc,不建议这样做。遵循那里的建议并检查您如何实现并发。让我们知道这是否有帮助
标签: java performance google-app-engine