【问题标题】:What happens to temp files in Heroku (Node application)Heroku(节点应用程序)中的临时文件会发生什么
【发布时间】:2018-02-27 04:51:51
【问题描述】:

我有一个免费的 Heroku 帐户,我的 Node 应用程序使用 Amazon S3 来存储文件。我使用 s3fs 模块和多方中间件,它首先临时存储文件,然后将其上传到 S3。

文件上传并在fs中取消链接后,在本地开发过程中,该文件仍然保留在我的本地临时文件夹中。我已经在我的 Heroku 应用程序上部署了相同的代码,我担心是否有任何方法可以检查临时文件夹或每天将其删除,因为该应用程序的 slug 大小限制为 500mb,上传的文件甚至可能超过 100 mbs。

【问题讨论】:

    标签: node.js heroku amazon-s3


    【解决方案1】:

    在 Heroku 中,每个 dyno 都有自己的临时文件系统,以及最近部署的代码的新副本。

    一般来说,临时文件系统就像任何文件系统一样工作。您有权写入的目录,例如/tmp,您可以向其中写入文件。

    在测功机的生命周期内,其运行的进程可以将文件系统用作临时暂存器,并且在测功机停止、重新启动或回收时写入的任何文件都将被丢弃。

    如果您将临时文件存储在 /tmp 文件夹中,您可以运行 df 来检查已用和可用空间:

    heroku run bash
    df -h /tmp
    

    另请注意,slug 是应用程序的压缩和预打包副本,文件不存储在 slug 中,而是存储在 dyno 的临时文件系统中。您极不可能有一个真正证明必须从测功机的临时文件系统中删除文件的用例。

    总之,您不必担心每天删除tmp 文件夹,因为任何写入的文件都会在dyno 停止或重新启动时被丢弃,或者作为正常dyno 管理的一部分大约每天一次。

    【讨论】:

    • 感谢您的回答。我需要在上传到 S3 之前处理文件,这就是它被临时存储的原因。在 Heroku 开始收费之前,我不会有任何问题。 temp 中的文件在上传到 S3 后就没用了,我担心在 dyno 重启之间,该应用程序将收集高达几 GB 的临时数据。
    • 嗨 Abhishek,我对临时存储有相同的用例(它仅在处理文件时服务)。您是否必须删除临时创建的文件?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    相关资源
    最近更新 更多