我对在处理大量任务时在App Engine上收到任务失败消息有疑问。
错误如下:
在等待太长时间以尝试服务您的请求后,请求被中止。
我的服务配置如下:
OutputCache
在我的代码中,我想运行并发操作,因此我启动了许多要并发运行的任务。问题是,由于可能没有太多实例准备处理我的呼叫,并且当请求超出最大可保留在队列中的时间时,我可能会不时出现所显示的错误。
您对如何处理这种情况有任何建议吗?将min-pending-latency设置为高值可以在此问题上产生积极影响吗?
谢谢您的帮助:)
答案 0 :(得分:1)
Japa应用程序的实例启动时间通常较长,这可能在您的方案中起很大作用。
注意事项:
<threadsafe>true</threadsafe>
),如果您的应用程序可以容忍(并非总是如此)。或者,如果仅使该特定任务处理程序具有线程安全性,则可以将其放在单独的服务中并使其成为多线程。这将允许一个实例同时处理多个任务,从而减少了所需实例的数量,从而降低了实例启动时间的影响min-idle-instances
扩展配置元素)-这些实例旨在处理临时请求高峰,直到GAE启动新的动态实例以处理流量增加(这需要一些时间,包括实例启动时间),另请参见Why do more requests go to new (dynamic) instances than to resident instance? TaskOptions.countdownMillis(long)
/ TaskOptions.etaMillis(long)
或Using the DeferredTasks instead of a worker service及时错开任务以避免太突然的任务高峰,从而减少了这些任务在队列中花费的有效时间,让GAE有机会启动足够的实例来处理它们