【问题标题】:Memory usage in Google App EngineGoogle App Engine 中的内存使用情况
【发布时间】:2010-01-31 05:05:28
【问题描述】:

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

我有点困惑,因为 Google 没有提及内存配额。

谢谢!

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

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

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

    总而言之,是的,可以做你想做的事,但可能不值得这么麻烦。如果您想做计算密集型的事情,请查看其他云解决方案,例如 Amazon 的 EC2 或 Hadoop。

    【讨论】:

    • 这解释了一些事情。非常感谢!顺便说一句 - 我更喜欢 GAE,因为它可以免费满足我的需要。据我了解,亚马逊从一开始就向您收费。我也考虑过 Hadoop,Amazon + Hadoop 可能是一个很好的解决方案,但 Hadoop 本身并不能帮助我,因为它只是一个软件,我仍然需要基础设施。但是现在,Hadoop 不在我的优先级列表中,因为计算时间不是一个大问题。我想我会在我的计算机上进行离线计算,将所有结果保存到 CSV 文件,然后将它们上传到 GAE 数据存储。
    • 你应该试试 stax.net 我现在正在使用它,它很好
    • @mnml - 发帖人想要一个免费的解决方案。 stax.net 还没有列出价格,也没有提到他们退出测试版后会有免费选项。
    • 据我所知,它会保持原样,如果您想添加更多实例,价格会上涨,这是他们告诉我的。试着在这里帮忙 :) 因为我不认为 Google App Engine 是他想做的事情的好解决方案。
    • 啊,很高兴知道。他们可能应该将其添加到他们的常见问题解答中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    相关资源
    最近更新 更多