【问题标题】:Using Ebean with Play Framework on Heroku在 Heroku 上使用 Ebean 和 Play 框架
【发布时间】:2012-09-01 23:56:52
【问题描述】:

我在 Play Framework 2 中使用 Ebean 来存储一些基本信息。这个应用程序被推送到 Heroku。一切似乎都很好,我可以用 Ebean 写/读,但是几个小时后,当我访问应用程序时,存储的所有内容都消失了。

this source我知道,当应用程序访问不频繁时,它需要启动。也就是说,正在运行的应用程序会在空闲一段时间后关闭,对吧?

很少访问的免费应用程序需要几秒钟(有时更长)才能启动 - 如果您需要您的应用程序在一段时间内第一次访问时也能快速响应,请升级到付费计划

我发现这个问题No permanent filesystem for Heroku? 解释了heroku 上没有永久文件系统。

因此,Ebean 将数据存储在文件系统上,这意味着由于 Heroku 上没有永久文件系统,它们会在一段时间后被擦除。

我应该提到我在 Heroku 上使用免费应用程序。 任何建议如何解决这个问题? 也许我错过了一些配置,或者什么......

编辑

我使用保存在文件中的 H2 数据库。

【问题讨论】:

  • 你用的是什么数据库?如果是 H2,那么由于数据“持久化”在内存中,并且 Heroku 在空闲时间后关闭了您的应用程序,那么数据就会丢失。
  • 是的,我使用存储在文件中的 H2。我编辑了我的问题。

标签: heroku playframework-2.0 ebean


【解决方案1】:

为什么不使用免费计划中提供的 Heroku 的 Postgresql?

前几天在使用中遇到了一些问题,所以配置应该没有问题,即:https://stackoverflow.com/a/12196800/1066240

【讨论】:

  • 是的,你说得对!这基本上是使用文件基础数据库的解决方案。我试图关注你的answer,但遇到了另一个问题,我描述了here
【解决方案2】:

来自heroku docs

已扩展网络 dynos 数量的应用程序(运行网络的 dynos 进程类型),这样只有一个网络测功机正在运行,将有 该网络测功机在闲置一小时后闲置。 ... 应用程序 运行超过 1 个 web dyno 永远不会闲置。工人测功机 永远不会闲着。

关于文件系统生命周期:

临时文件系统

每个 dyno 都有自己的临时文件系统,以及最近部署的代码的新副本。在 dyno 的生命周期中,它的运行进程可以将文件系统用作临时暂存器,但写入的文件对任何其他进程都不可见 dyno 和任何写入的文件都将在 dyno 被丢弃的那一刻被丢弃 停止或重新启动。

因此,由于您将 H2 与存储在文件系统上的文件一起使用,数据将在不活动一小时后丢失。

为了存储您的数据,我强烈建议您使用Postgres Heroku addon,它免费提供 10.000 行。

【讨论】:

    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多