google-app-engine - 超出软专用内存限制

标签 google-app-engine memory-leaks google-cloud-datastore go

我们对 gae go 的体验很糟糕。当我们的应用程序是免费的时,我们从未遇到过超出软私有(private)内存限制的问题。我们达到了配额,因此我们决定付款。我们的每日预算设置为 3 美元。激活付费服务后,我们可以再次使用该网站,超出配额的情况也消失了。几个小时后,我们得到了这个 Exceeded soft private memory limit 并且只能看到这个。我试图清除数据存储中的一些大数据,禁用内置插件,但仍然没有成功。

我在代码中做了一些测试,以确定错误来自何处。删除数据存储访问代码,重新构建站点。所以我的结论是访问数据存储,即使只是为了获取很少的实体也会引发这样的错误。我们有点绝望了。我们选择使用 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]
      }                           
    }

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

最佳答案

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

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

关于google-app-engine - 超出软专用内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15533248/

相关文章:

java - JSP 页面和 Java Servlet 重用变量名的约定是什么?

java - Java 初始化线程时出现拒绝访问错误

java - Appengine 转换 Api (java)

ios - iOS-CGImageRef潜在泄漏

google-app-engine - 使用 Cloud Datastore 初始化 Go AppEngine 应用

python - 如何删除 App Engine 中的自动索引?

python - Google 应用引擎键值错误

android - 由于 Snackbar 导致的内存泄漏

c++ - 使用临时数据表修复内存泄漏(堆与堆栈)

python - 启动、停止和继续 Google App Engine BulkLoader