Google app engine 超出了软私有内存限制

Google app engine 超出了软私有内存限制,google-app-engine,memory-leaks,google-cloud-datastore,go,Google App Engine,Memory Leaks,Google Cloud Datastore,Go,我们在gae go的经历很糟糕。当我们的应用程序是免费的时,我们从未遇到过超出软私有内存限制的问题。我们超过了限额,所以我们决定付款。我们的每日预算定为3美元。激活付费服务后,我们可以再次使用该网站,超额配额也就消失了。几个小时后,我们发现这个超出了软私有内存限制,除了这个,我们再也看不到任何东西了。我试图清除数据存储中的一些大数据,禁用内置功能,但仍然没有成功 我在代码中做了一些测试,以确定故障来自何处。删除数据存储访问代码后,该站点再次恢复。所以我的结论是,访问数据存储,即使只是获取很少的实

我们在gae go的经历很糟糕。当我们的应用程序是免费的时,我们从未遇到过超出软私有内存限制的问题。我们超过了限额,所以我们决定付款。我们的每日预算定为3美元。激活付费服务后,我们可以再次使用该网站,超额配额也就消失了。几个小时后,我们发现这个超出了软私有内存限制,除了这个,我们再也看不到任何东西了。我试图清除数据存储中的一些大数据,禁用内置功能,但仍然没有成功

我在代码中做了一些测试,以确定故障来自何处。删除数据存储访问代码后,该站点再次恢复。所以我的结论是,访问数据存储,即使只是获取很少的实体,也会引发这样的错误。我们有点绝望。我们选择使用appspot来利用这项技术,但我们得到了这个asn,我们无法继续开发

下面是引发此类错误的代码

q := datastore.NewQuery("Course")
    courses := make([]courseData, 0)
    if keys, err := q.GetAll(c, &courses); err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    } else {
      for i := range courses {                 
          courses[i].Key = keys[i]
      }                           
    }

如果您能给予我们任何帮助,我们将不胜感激。提前谢谢。

根据我的经验,此消息通常意味着您的实例使用的内存比实例类支持的要多。如果您开始收到此消息,请升级到下一个实例类(F2等),并查看它是否消失。这是您在模块配置文件中所做的更改(以前位于“应用程序设置”部分的管理控制台中)。问题很可能会消失,当然,除非您使用的内存超过了下一个类所能支持的


不像其他可以自动扩展到预算限额的资源,RAM不是;如果请求导致实例超过其实例类的RAM限制,则实例将在请求结束时终止,并记录此消息。

免责声明,不要使用gae。但是,以上提出了一个问题,有多少课程?每个课程中有多少数据?您是否分析了应用程序以查看内存消耗的位置?所有实例都有有限的内存(F1-128MB),如果你去获取大量数据,当然你会耗尽内存限制。除非你一次需要所有课程,也许可以尝试迭代查询结果,而不是使用GetAll()?它目前只有20个课程。原始代码有很多数据存储访问代码,在应用程序仍然免费的情况下,它工作得很好。现在它是付费的,即使是单个数据存储访问也会导致内存限制错误。所有配额都可以。所以我不知道该去哪里看。如果这样一个例行的数据存储访问占用了这么多内存,那将是令人惊讶的。也许您可以提供复制此错误的最小完整应用程序,或者至少提供课程实体?