gpt4 book ai didi

java - 应用程序引擎在任务突发期间中止请求错误

转载 作者:行者123 更新时间:2023-12-02 11:04:32 24 4
gpt4 key购买 nike

我对处理大量任务时在 App Engine 上收到的任务失败消息有疑问。

错误如下:

Request was aborted after waiting too long to attempt to service your request.

我的服务配置如下:

<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能对这件事情起到积极的作用吗?

谢谢你的帮助:)

最佳答案

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 有机会启动足够的实例来处理它们

关于java - 应用程序引擎在任务突发期间中止请求错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51086243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com