请求中的 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' 错误
使用 BigQuery 选择所有相关行(从 GAE 读取日志)