我正在使用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
执行任务的失败是“超出了软内存限制”。因此,为了解决这个错误,我认为扩展应该基于“内存利用率”而不是“cpu利用率”。
当内存利用率超过限制时,如何进行横向扩展?
动态实例调度程序的决策不是基于实例内存使用情况。从缩放动态实例:
appengine调度程序决定是否使用现有实例(空闲或接受并发请求的实例)为每个新请求提供服务,将请求放入挂起的请求队列,或为该请求启动新实例。该决策考虑了可用实例的数量、应用程序服务请求的速度(延迟)以及启动新实例所需的时间。
您收到的所有错误消息都显示在错误发生之前处理的请求数量非常少,这表明内存不足非常严重。
不清楚的是,高内存使用率是来自单个请求,还是与多个并发请求相关,即请求同时命中一个实例(或者距离太近,内存释放机制无法跟上)。但这可以通过实验来确定。
如果多个并发的传入请求驱动实例内存使用超过阈值,您可以尝试通过控制target_throughput_utilization
和/或max_concurrent_requests
旋钮来处理它:
目标吞吐量利用率
设置并发请求数的吞吐量阈值,在此之后将启动更多实例来处理流量。
最大并发请求
设置调度程序生成新实例之前实例可以接受的最大并发请求。
如果在实例不同时处理多个请求的情况下也达到了内存限制(或者如果您希望能够同时为更多实例提供服务—通常是为了降低成本),那么解决该问题的唯一方法就是使用具有更多内存的实例类。您尝试的F4
和B4
类都有512M,tryF4_1G
/B4_1G
,它们都有1G。
提前感谢你的帮助
我们有一个可怕的经验与gae围棋。当我们的应用程序是一个免费的,我们从来没有超过软私有内存限制的问题。我们抢了定额,因此决定付款。我们每天的预算定为3美元。付费服务激活后,我们可以再次使用该网站,超额配额消失了。几个小时后,我们得到了这个超软私有内存限制,除了这个,再也看不到任何东西了。我试图清除数据存储中的一些大数据,禁用内置插件,但仍然没有运气。 我在代码中做了一些测试,以确定故障来自何处。删
在我的jenkins工作中,我得到这个错误为我的bot用户。我的限制是5000,我看到每秒钟大约有100个请求,我不确定哪个工作/服务正在使用机器人的请求。理想情况下,我的其他jenkins工作应该每分钟最多占用1个请求。 有没有办法找出是什么导致了如此高的请求率?或者任何API调用来列出在最后一分钟内进行的所有API调用或类似的东西?
我正在获取一个GZip LXML文件,并试图将产品条目写入数据库模型。以前,我有本地内存问题,这是通过SO(问题)的帮助解决的。现在我得到了一切工作和部署它,然而在服务器上我得到以下错误: 现在我尝试了所有我知道的方法来减少内存使用,目前正在使用下面的代码。gzip文件约为7MB,而解压缩文件约为80MB。本地代码运行良好。我试着将其作为HTTP请求和Cron作业运行,但没有什么不同。现在我想知道
我很好奇如何处理GAE中的内存限制。目前,我有这个应用程序,需要大量的CPU/内存。 我尝试在GAE上使用b8实例运行它(基本上是使用4.8GHz CPU的顶级实例) 我还尝试手动设置CPU的数量 但无论我做什么,我总是达到同样的记忆限制。。。(见下文) GET500 0 B 43 s Unknown/_ah/start在总共处理0个请求后,超过了2048 MB的软内存限制,达到3163 MB。考
我们正在使用Google的Admin SDK API。当我们执行超过2个线程向谷歌服务器发出批量请求时,我们会遇到很多403(超过速率限制)错误。 我们在项目管理面板中更改了每秒请求的速率限制,但似乎没有效果。正如谷歌在https://developers.google.com/admin-sdk/directory/v1/limits我们已尝试使用每个线程一个用户的凭据。 我们每秒可以发送多少个