超出软私人内存限制

sag*_*git 5 google-app-engine memory-leaks go google-cloud-datastore

我们有一个很糟糕的经历.当我们的应用程序是免费的时,我们从未遇到超出软私有内存限制的问题.我们击中了配额,因此我们决定付款.我们的每日预算定为3美元.激活付费服务后,我们再次使用该网站,超额配额消失了.几个小时之后,我们得到了这个Exceeded软内存限制,除此之外再也看不到了.我试图清除数据存储区中的一些大数据,禁用内置的内存,但仍然没有运气.

我在代码中对故障的来源进行了一些测试.删除数据存储区访问代码,使网站重新启动.所以我的结论是访问数据存储区甚至只是为了获取很少的实体会引发这样的错误.我们有点无望.我们选择使用appspot来利用这项技术,但我们得到了这个,因为我们无法继续开发.

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

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]
      }                           
    }
Run Code Online (Sandbox Code Playgroud)

您可以向我们提供的任何帮助都将受到高度赞赏.先感谢您.

gae*_*123 3

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

与其他会根据您的预算限制自动扩展的资源不同,RAM 不会;如果请求导致实例超出其实例类的 RAM 限制,则该实例将在请求结束时终止,并记录此消息。