英文:
Java - Google App engine - Process terminated because the request deadline was exceeded
问题
请求突然停止了,我不知道为什么会发生这种情况。
我正在使用Java 11。
{"@type":"type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry", "statusDetails":"client_disconnected_before_any_response"}
这是我的App Engine配置:
英文:
the requests suddenly stopped and I don't know why this happen. I am using java11.
{"@type":"type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry", "statusDetails":"client_disconnected_before_any_response"}
this my app engine configs
<precompilation-enabled>false</precompilation-enabled>
<sessions-enabled>true</sessions-enabled>
<threadsafe>true</threadsafe>
<instance-class>F4</instance-class>
<automatic-scaling>
<max-concurrent-requests>50</max-concurrent-requests>
<max-pending-latency>8s</max-pending-latency>
<min-pending-latency>4s</min-pending-latency>
<min-instances>1</min-instances>
<min-idle-instances>1</min-idle-instances>
</automatic-scaling>
答案1
得分: 1
你遇到的错误意味着根据文档,客户端在负载均衡器能够回复之前断开了连接:
> client_disconnected_before_any_response - 在负载均衡器发送任何响应之前,与客户端的连接被中断。
而错误代码123是一个截止期限已过错误:
> HARD_REQUEST_TIME_LIMIT- 请求超过了截止期限,导致实例关闭。
这些已知问题可能导致此问题:
- 高延迟,这意味着您的实例的启动代码可能太长,建议在这种情况下设置“min_idle_instances”,但请记住这可能会导致您的计费增加。
- 并行运行多个请求,这可能会导致线程死锁并导致超时;在这种情况下,建议使用负载均衡器。
如LundinCast在这个stackoverflow 答案中还提到的:
> - 您很可能已将您的App Engine服务扩展元素设置为“自动扩展”(或者没有定义它,因为自动扩展是默认值)在app.yaml文件中。
> - 自动扩展的实例有10分钟的截止期限,如此处所述。您需要重新部署您的服务,使用更新的app.yaml文件将扩展元素设置为“手动扩展”或“基本扩展”,以允许您的任务运行最多24小时。
您还可以查看以下类似案例以获取更多信息:
如何解决“进程已终止,因为请求截止期限已过(错误代码123)”在Google API中?
Google App Engine:间歇性问题:进程已终止,因为请求截止期限已过(错误代码123)
英文:
Error you're getting means as per documentation that the client disconnected before load balancer could reply:
> client_disconnected_before_any_response - The connection to the client
> was broken before the load balancer sent any response.
And the Error code 123 is a Deadline Exceeded Error
> HARD_REQUEST_TIME_LIMIT- Request exceeded a deadline, causing the
> instance to shut down
Here are some known issues that cause this issue:
- High latency, this means that your startup code for instances may take too long, what is recommended in this case is to set a “min_idle_instances” just remember that this might cause an increase in your billing.
- Running multiple requests in parallel, this can cause a thread deadlock and result in timeouts; in this case it is recommend to use load balancers.
As also mentioned in this stackoverflow Answer by LundinCast
> - You've most likely set your App Engine service scaling element to "autoscaling" (or didn't define it, autoscaling being the default
> value) in the app.yaml file.
> - Instances in autoscaling have a deadline of 10min, as documented here. You'll need to re-deploy your service with an updated
> app.yaml file setting the scaling element to "manual scaling" or
> "basic scaling" to allow your tasks to run to up to 24h.
You might also check this similar cases for more information
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论