Google App Engine 中1M的限制
除了'1000'的限制(查詢返回記錄不能超過1000條)外, 今天發現GAE還有一個'1M'的限制.
我在用Memcache緩存一個大List時碰到MemoryError, error message寫明瞭一個cached item不能超過1000000bytes. 跑到group
上問了一下
. Aral也碰到了同樣的問題. 除了memcache外, 原來GAE裏面很多地方都有1M的限制
(以下翻譯自Aral的blog
):
- 一個數據結構不能大於1M, 否則會拋出MemoryError
- Response不能返回超過1M的內容, 否則會拋出異常:'TTP response was too large'
- 一個Model的實例(相當於一條數據庫記錄)不能超過1M, 否則會遇到RequestTooLarge 異常. (我曾遇到過這個異常)
Prateek
在回覆中還加了一條: Image API 也有1M的限制; Google可能是不希望某個程序員的BT代碼把服務器拖垮.
我們從.net的GC運行原理也瞭解頻繁創建生存週期比較短的大對象會影響到程序性能. 在.net中這個標準是85000字節.
大於這個標準的對象在一個專門的堆中分配, 而且一直算是第二代. 因此要麼就是這塊內存一直不被回收, 要麼就是頻繁收集第二代對象.
歡迎和我交流 Google App Engine的開發. 歡迎到我開發的第一個GAE app看看: http://feedzshare.appspot.com
kuber
@FeedzShare