GAE / J:开发和生产环境

时间:2011-02-02 13:31:05

标签: java google-app-engine development-environment production-environment

开发和生产环境之间的GAE / J关键差异是什么。

  • 生产时应该重新检查什么?
  • 我应该期待什么样的数据存储差异?

4 个答案:

答案 0 :(得分:7)

  • 开发环境是单线程的
  • 无请求超时
  • exploding index,infact dev env根本不使用索引进行查询
  • 没有异步URLFetch
  • 没有异步数据存储
  • 显然没有请求统计/日志搜索界面
  • 没有等待索引构建的时间
  • 没有数据存储超时
  • 没有减少capabilities

答案 1 :(得分:1)

dev(可以理解)的性能与生产完全无关。冷启动不是开发中的问题。

在开发服务器上存储特别大量的数据可能会出现问题,您可能不得不将开发服务器的数据存储区切换为sqlite。

使用javamail发送电子邮件在开发时无法测试。

oauth和用户API仅在开发时最低限度地实现。

Cron作业不会在开发时执行,必须手动触发。

我很确定爆炸式索引问题不会让你厌倦开发,在上传到生产之后,这是一个有趣的错误。

我有完全可以接受的JDO代码,它在dev throw in production中运行,(persistall())。坚持每个对象然后工作。

根据我的经验,我确信还有更多内容。

答案 2 :(得分:1)

开发和生产环境之间存在许多差异,在设计应用程序之前,您应该了解所有这些差异;与分布式生产环境的复杂性/可怕性相比,开发服务器是一个“玩具”(没有索引,单线程)是没用的。

以下是您在生产环境中可以找到的一些问题:

  1. 截止日期(每次请求30秒,任务队列10分钟,Urlfetch最长10秒)
  2. 更新实体时的争用
  3. 在尝试存储或传递太大的内容时,对象太大的异常
  4. 环境分布式性质的暂时性错误(超时)
  5. 通常,每次API上都有文档化约束(timeouts-quota)时,在开发环境中放宽相同的约束;准备写很多防御性代码。

    开发服务器的Viceversa,即使启用Sqlite,在尝试存储/更新数千个实体时也有严重的限制;生产服务器是一个强大的野兽。

答案 3 :(得分:1)

除了上面提到的那些,我发现了另外一个区别。在dev环境中,您可以在会话属性中存储不可序列化的类和对象。但是要注意在会话属性中只存储可生成序列化的类,否则你将获得异常。