将Heroku临时文件系统用作Ehcache磁盘存储

时间:2018-10-01 19:41:46

标签: java caching heroku filesystems ehcache

如Heroku Dyno ephemeral filesystem documentation所述,当dyno停止或重新启动时,文件系统将被丢弃。这意味着它不能用作持久性(磁盘)存储。

我的用例是我想使用 Ehcache 缓存一些参考数据。我当时正在考虑使用一些(有限的)堆内存以获得最佳性能,如果这不足以回退到磁盘存储。 使用Ehcache,可以在每个缓存的基础上将其很好地配置为例如在堆内存中最多存储1000个条目,例如磁盘上有25MB。

根据Heroku文档,在dyno运行时,临时文件系统似乎将保持完整。 在我的情况下,当应用停止或重新启动时将其丢弃时,这无关紧要。 在我的用例中,当我运行3个dyno时,它们在堆和磁盘中都有自己的缓存也没关系。

  1. 我的假设是否正确,即在dyno运行时,临时文件系统在请求期间不会被丢弃?仅当测功机停止或重新启动时?
  2. 可以说一下临时文件系统的性能吗?特别是在我的用例中,将其用作缓存磁盘存储。
  3. 临时文件系统的大小是多少?我似乎在文档中找不到。

1 个答案:

答案 0 :(得分:0)

总体而言,您将Ehcache写入磁盘的计划似乎还不错。当然,每次dyno重新启动后,您都会付出一些开销,但这是大多数缓存系统所期望的。

  
      
  1. 我的假设是否正确,即在dyno运行时,临时文件系统在请求期间不会被丢弃?仅当测功机停止或重新启动时?
  2.   

是的,您是正确的。

  
      
  1. 可以说一下临时文件系统的性能吗?特别是在我的用例中,将其用作缓存磁盘存储。
  2.   

您可以期望性能类似于在AWS EC2实例中写入文件系统。很好。

  
      
  1. 临时文件系统的大小是多少?我似乎在文档中找不到。
  2.   

我认为没有发布的限制。这也取决于您的测功机(即像兴趣测功机那样是多租户还是像表演m那样专用)。我想,只要您写入的空间不足1GB,就应该没有问题。