Google App Engine中的内存使用情况

时间:2010-01-31 05:05:29

标签: java google-app-engine

我有点困惑。我写了一个Java独立应用程序,现在我想使用GAE 将其部署在网络上并在途中也了解GAE。 在我的应用程序中,我从文件中读取数据,将其存储在内存中,处理它,然后将结果存储在内存或文件中。 我知道现在我需要将结果存储在GAE的数据存储中,这很好。所以我可以在我的计算机上独立运行我的程序,然后将结果写入文件,然后使用GAE将所有结果上传到数据存储,然后用户可以查询它。但是,有没有办法可以将整个流程转移到GAE应用程序中?所以应用程序从文件读取数据,进行处理(使用应用程序服务器上的内存而不是我的计算机 - 需要至少4GB的RAM),然后当它完成时(可能需要1-2个小时),将所有内容写入GAE数据存储? (所以这是一个没有用户参与的内部“离线”过程。)

我有点困惑,因为谷歌没有提及有关内存配额的任何内容。

谢谢!

1 个答案:

答案 0 :(得分:8)

您无法按照预想的方式进行离线处理。应用程序可以使用多少内存,但这不是主要问题。 app引擎中的所有处理都在请求处理程序中完成。换句话说,您希望应用程序执行的任何操作都将被编写为处理Web请求。这些处理程序中的每一个都限制为30秒的运行时间。如果您的进程试图运行更长时间,它将被关闭。 App引擎针对Web请求进行了优化,而不是进行大量计算。

所有这一切,您可以将计算任务分解为30秒块并将中间结果存储在数据存储区或内存缓存中。在这种情况下,您可以使用cron作业或任务队列(两者都在应用程序引擎文档中描述)继续调用处理处理程序,直到完成数据处理。

总之,是的,它可能会做你想要的,但它可能不值得麻烦。如果你想做计算密集型的事情,请查看亚马逊的EC2或Hadoop等其他云解决方案。