请求中的 GAE 错误代码 104 中断了所有并发请求

Posted

技术标签:

【中文标题】请求中的 GAE 错误代码 104 中断了所有并发请求【英文标题】:GAE Error code 104 in request breaks all concurrent request 【发布时间】:2020-05-03 00:33:15 【问题描述】:

我们遇到以下错误模式:

    API 调用 urlfetch.Fetch() 被取消,因为整个 HTTP 已达到请求截止日期。嵌套异常是 java.io.IOException: com.google.apphosting.api.ApiProxy$CancelledException:API 调用 urlfetch.Fetch() 被取消,因为整个 HTTP 请求 已到最后期限。

2.除了

com.google.apphosting.api.ApiProxy$CancelledException:API 调用 urlfetch.Fetch() 被取消,因为线程被中断 在等待并发 API 调用时。嵌套异常是 java.io.IOException: com.google.apphosting.api.ApiProxy$CancelledException:API 调用 urlfetch.Fetch() 被取消,因为线程被中断 在等待并发 API 调用时

3.在接下来的几毫秒内到达 GAE 应用程序的后续请求失败,并显示相同的 Error code 104

RestTemplate restTemplate = new RestTemplate(getClientHttpRequestFactory());

try            
    URI uri = new URI("https://sample/" + sessionId);           
    sessionInfo = restTemplate.getForObject(uri, SessionResponse.class);         catch (Exception e)              
     System.out.println(e.getMessage());        

我将 restTemplate 的超时设置为 50 秒,此代码位于拦截器中,每个请求都会迁移到此代码块并执行

我正在使用 javax.servlet.Filter 将请求迁移到那里,我遇到了第二个异常

对此的任何解决方案将不胜感激,

Appengine-web.xml 文件

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <threadsafe>true</threadsafe>
    <runtime>java8</runtime>
    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
    </system-properties>
    <url-stream-handler>urlfetch</url-stream-handler>
    <warmup-requests-enabled>false</warmup-requests-enabled>
</appengine-web-app>

【问题讨论】:

你能分享你的 app.yaml 吗? @AndreiTigau 我们没有配置 app.yaml 而不是你可以检查上面的 appengine-web.xml 文件,这个问题我发现我将超时设置为 50 秒,每个 concurent 请求都是超过 80 秒,所以 appengine 抛出截止日期异常 @AndreiTigau 我删除了休息模板中的超时并检查了同样的问题,你能看看我在这个链接中得到的这个问题吗--***.com/questions/59775177/… 【参考方案1】:

App Engine 中的错误代码104 通常表示您的实例面临 OOM 问题,或者 Deadline 超出异常。

据我从您的 cmets 中了解到,第二个问题发生了。解决该问题的一个选项是将缩放类型设置为basic-scaling。在基本缩放的情况下,您的应用只有在 24 小时内没有回复时才会超时。

你可以阅读更多关于这个here的信息。

【讨论】:

以上是关于请求中的 GAE 错误代码 104 中断了所有并发请求的主要内容,如果未能解决你的问题,请参考以下文章

GAE 中的 SQLAlchemy 'character_set_name' 错误

GAE + Cloud SQL - 如何理解不同的层

Java并发-取消与关闭

使用 BigQuery 选择所有相关行(从 GAE 读取日志)

nginx错误分析 `104: Connection reset by peer`

如何使用GAE收听Google表格,然后运行一组python代码?