gpt4 book ai didi

google-app-engine - 当内存利用率超过限制时横向扩展 GAE

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:11 25 4
gpt4 key购买 nike

我将 GAE 用于需要大量内存的繁重任务。我收到以下错误:

Exceeded soft memory limit of 512 MB with 561 MB 
after servicing 3 requests total.
Consider setting a larger instance class in app.yaml.

由于任务代价高昂,我假设两个应用程序可以在一个实例中运行。但它不适用于三个应用程序:

While handling this request, 
the process that handled this request was found to be using
too much memory and was terminated.
This is likely to cause a new process to be used
for the next request to your application.
If you see this message frequently,
you may have a memory leak in your application or may be
using an instance with insufficient memory.
Consider setting a larger instance class in app.yaml.

我当前的设置:

runtime: nodejs8
instance_class: B4
basic_scaling:
max_instances: 10
idle_timeout: 1m

我也试过这些设置:

runtime: nodejs8
instance_class: F4
automatic_scaling:
target_cpu_utilization: 0.5
max_instances: 10

任务执行失败是“Exceeded soft memory limit”。所以,要解决这个错误,我认为应该根据“内存利用率”而不是“CPU 利用率”来进行横向扩展。

当内存使用率超过限制时,如何进行横向扩展?

最佳答案

动态实例调度程序的决策不是基于实例内存使用情况。从 Scaling dynamic instances 开始:

The App Engine scheduler decides whether to serve each new request with an existing instance (either one that is idle or accepts concurrent requests), put the request in a pending request queue, or start a new instance for that request. The decision takes into account the number of available instances, how quickly your application has been serving requests (its latency), and how long it takes to start a new instance.

您收到的错误消息都显示在错误发生之前正在处理的请求数量非常少,这表明内存不足非常严重。

不清楚的是高内存使用率是来自单个请求还是与多个并发请求有关 - 即请求同时命中一个实例(或者彼此太接近以释放内存机制,如果有的话,跟上)。但这可以通过实验确定。

如果多个并发传入请求导致实例内存使用量超过阈值,您可以尝试通过控制 target_throughput_utilization 和/或 max_concurrent_requests 旋钮来处理它:

Target Throughput Utilization

Sets the throughput threshold for the number of concurrent requests after which more instances will be started to handle traffic.

Max Concurrent Requests

Sets the max concurrent requests an instance can accept before the scheduler spawns a new instance.

如果即使实例没有同时处理多个请求也会达到内存限制(或者如果您希望能够同时服务更多实例 - 通常是为了降低成本),您可以解决它的唯一方法是使用 instance classes 和更多内存。你试的F4B4类都是512M,试试F4_1G/B4_1G,都是1G。

关于google-app-engine - 当内存利用率超过限制时横向扩展 GAE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52792275/

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