首页 > 解决方案 > 服务 0 个请求后超过 1024 MB 的软内存限制

问题描述

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

  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 作业,没有守护进程,我不希望消耗内存。之前,我对这台服务器做了很多代码优化,实际上一直处于空闲状态。仅在应用程序中提供来自我的手机的按钮单击请求而没有后台服务(一个用户一个应用程序)。

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. 如果我将其投入生产(鉴于问题已解决),它能否处理 5000-10000 个用户每天发出 20-30 个请求?如果没有,我将非常感谢为这么多用户提供示例配置。这是我第一次在谷歌应用引擎/谷歌云上托管

编辑:端点代码:

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
    });
});

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

解决方案


在本地运行时消耗多少内存?如果您无法发布所有代码,请在内存配置文件运行时发布结果我知道 stackdriver 有一个测试版的分析器,这可能有助于追踪正在发生的事情https://cloud.google。 com/分析器/


推荐阅读