Kuberski - 酷伯司机

写在代码边上
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

Google App Engine 中1M的限制

Posted on 2008-08-08 11:14  kuber  阅读(1628)  评论(1编辑  收藏  举报
除了'1000'的限制(查询返回记录不能超过1000条)外, 今天发现GAE还有一个'1M'的限制.
我在用Memcache缓存一个大List时碰到MemoryError, error message写明了一个cached item不能超过1000000bytes. 跑到group问了一下. Aral也碰到了同样的问题. 除了memcache外, 原来GAE里面很多地方都有1M的限制(以下翻译自Aral的blog):
  1. 一个数据结构不能大于1M, 否则会抛出MemoryError
  2. Response不能返回超过1M的内容, 否则会抛出异常:'TTP response was too large'
  3. 一个Model的实例(相当于一条数据库记录)不能超过1M, 否则会遇到RequestTooLarge 异常. (我曾遇到过这个异常)

Prateek在回复中还加了一条: Image API 也有1M的限制; Google可能是不希望某个程序员的BT代码把服务器拖垮. 我们从.net的GC运行原理也了解频繁创建生存周期比较短的大对象会影响到程序性能. 在.net中这个标准是85000字节. 大于这个标准的对象在一个专门的堆中分配, 而且一直算是第二代. 因此要么就是这块内存一直不被回收, 要么就是频繁收集第二代对象.

欢迎和我交流 Google App Engine的开发. 欢迎到我开发的第一个GAE app看看: http://feedzshare.appspot.com