2013-03-20 175 views
5

我們有一個可怕的經驗與gae去。當我們的應用程序是免費的,我們從來沒有問題超過軟私人內存限制。我們衝擊配額,因此我們決定支付。我們的每日預算設定爲3美元。在付費服務激活之後,我們又能夠使用該網站,超額配額消失了。幾個小時後,我們得到了這個超出軟私人內存限制,並且再也看不到這些了。我試圖清除數據存儲中的一些大數據,禁用內置的插件,但仍然沒有運氣。超出軟性私人內存限制

我在代碼中做了一些關於故障來自何處的測試。刪除數據存儲區訪問代碼後,再次創建該網站。所以我的結論是訪問數據存儲庫甚至只是爲了獲取很少的實體會引發這樣的錯誤。我們有點絕望。我們選擇使用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] 
     }       
    } 

任何幫助,你可以延伸到我們將不勝感激。先謝謝你。

+3

免責聲明,請勿使用gae。但是,上面提出了問題,那裏有多少課程?每門課程有多少數據? – dskinner 2013-03-20 20:44:33

+2

你有沒有對你的應用進行簡介,看看內存在哪裏被消費?所有的實例都有一個有限的內存量(F1 - 128MB),如果你去並獲取大量的數據,當然你會吹出內存限制。 – 2013-03-21 01:06:04

+0

除非您一次需要所有課程,否則可能嘗試遍歷查詢結果而不是使用GetAll()? – 2013-03-21 04:38:52

回答

3

根據我的經驗,這條消息通常意味着你的實例使用的內存比實例類支持的要多。如果你開始得到這個消息升級到下一個實例類(F2等),並看看它是否消失。這是您在模塊配置文件中執行的更改(以前位於「應用程序設置」部分的管理控制檯中)。問題很可能會消失,除非你使用的內存比下一個班級可以支持的要多。

與其他資源自動縮放到預算限制不同,RAM不是;如果請求導致實例超過其實例類的RAM限制,那麼實例將在請求結束時終止並記錄此消息。