共处理0个请求后,超出了1024 MB的软内存限制

时间:2019-02-08 18:16:10

标签: google-app-engine google-cloud-platform

在任何人将此问题标记为重复之前,有一些问题使我与众不同。

  1. 看到此错误报告零请求!,其中 1024 MB(1GB!),这是令人震惊的,但我还是做了一个发布带有甚至无法达到1KB 的文本有效载荷的请求。

错误:Exceeded soft memory limit of 1024 MB with 1059 MB after servicing 0 requests total. Consider setting a larger instance class in app.yaml

注意:没有其他东西正在使用该服务器! 没有cron作业,没有deamons,我没有希望消耗内存的东西。在此之前,我已经对该服务器做了很多代码优化,并且实际上它是空闲的。在应用程序中仅提供来自我手机的按钮单击请求,而没有后台服务(一个用户一个应用程序)。

YAML文件:我使用;

# [START gae_quickstart_yaml]
runtime: nodejs8
instance_class: F4_1G
# [END gae_quickstart_yaml]
automatic_scaling:
  max_instances: 11
  target_cpu_utilization: 0.9

问题:

  1. 出了什么问题?

  2. 如果我将此产品投入生产(如果问题已解决),它可以处理每天发出20-30个请求的5000-10000个用户吗?如果没有,我将非常感谢为这样数量的用户提供的示例配置。这是我第一次在 Google App Engine / Google云

  3. 上托管

编辑:端点代码:

router.post('/endP', (req, res) => {
    let options = req.body.userdata;
    let isResponded = false;
    //simply inserting to DB with knex
    db_helper.insert(con.knex, options).then(async (s) => {
        isResponded=true;
        let reply = JSON.stringify(s);
        const message_content = {
                data: {
                body:reply
                },
                android: {
                    ttl: 3600 * 1000 * 24 * 28, // 4 weeks
                    priority: 'high',
          
                },
                topic:"myTopic"
            };
            //FCM notification
            await firebase.sendMessage(message_content);
            res.status(200).send(encryptor.encrypt(reply)).end();
    }).catch(err => {
        if (!isResponded) {
            let errr = err;
            res.status(500).send('Failed').end();
        }
        return null
    });
});

1 个答案:

答案 0 :(得分:2)

在本地运行时会消耗多少内存? 如果您无法发布所有代码,请在内存配置文件运行时发布结果 我知道stackdriver在beta中有一个探查器,它对于跟踪正在发生的https://cloud.google.com/profiler/

很有用