总共为3个请求提供服务后,超出了512 MB的软件内存限制和532 MB。考虑在app.yaml中设置更大的实例类

问题描述 投票:1回答:2

我们在Google App引擎标准环境中,使用F2实例(第1代-python 2.7)。我们有一个遵循此流程的报告模块。

工人任务在队列中启动。

    task = taskqueue.add(
            url='/backendreport',
            target='worker',
            queue_name = 'generate-reports',
            params={
                "task_data"     : task_data
            }) 

在worker类中,我们查询Google数据存储区并将数据写入Google表格。我们对记录进行分页以查找其他报告元素。当我们找到其他页面时,我们再次调用同一任务以生成另一个写操作,因此它可以获取下一组报告元素并将它们写到Google工作表中。

在backendreport.py中,我们有以下代码。

 class BackendReport(): 
        # Query google datastore to find the records(paginated)  
        result = self.service.spreadsheets().values().update(
                spreadsheetId=spreadsheet_Id, 
                range=range_name,
                valueInputOption=value_input_option, 
                body=resource_body).execute()

        # If pagination finds additional records
        task = taskqueue.add(
                url='/backendreport',
                target='worker',
                queue_name = 'generate-reports',
                params={
                    "task_data"     : task_data
                })

我们运行与前端作业(而不是任务)相同的BackendReport(带有分页)。分页工作没有任何错误-这意味着我们获取记录的每一页并显示在前端。但是,当我们迭代执行任务时,它会因软内存限制问题而失败。我们的印象是,每次(对于每个分页)调用一项任务时,它都应独立执行,并且不应有任何内存限制。我们在这里做错了什么?

为什么达到软内存限制时,GCP不会旋转另一个实例-自动(我们的实例类为F2)。错误消息说,服务总共3个请求后达到512 MB的软内存限制-这是否意味着backendreport模块启动了3个请求-是否意味着有3个任务调用(/ backendreport)?

google-app-engine google-app-engine-python google-tasks-api google-tasks
2个回答
0
投票

达到软内存限制后,为什么GCP不旋转其他实例

[当应用程序引擎决定启动新实例时的主要机制之一是max_concurrent_requests。您可以检出可以在此处配置的所有automatic_scaling参数:

https://cloud.google.com/appengine/docs/standard/python/config/appref#scaling_elements

这是否意味着backendreport模块启动了3个请求-是否意味着有3个任务调用(/ backendreport)?

我想是的。可以肯定的是,您可以打开日志查看器,找到打印该日志的日志,并通过该instance-id过滤日志,以查看它处理到该点的所有请求。


0
投票

您正在Cloud Tasks中创建多个任务,但是在那里的分派队列没有限制,并且当队列尝试同时分派多个任务时,它达到了内存限制。因此,您要设置的限制实际上是max_concurrent_requests,但不是针对app.yaml中的实例,应该为queue.yaml中的队列调度设置限制,因此一次仅调度一个任务:

- name: generate-reports
  rate: 1/s
  max_concurrent_requests: 1
© www.soinside.com 2019 - 2024. All rights reserved.