【问题标题】:Why does Passenger keep passenger-error-*.html files in /tmp?为什么Passenger 将passenger-error-*.html 文件保存在/tmp 中?
【发布时间】:2015-07-03 11:08:24
【问题描述】:

我们其中一台服务器上的磁盘已满。分析显示大部分空间都浪费在/tmp中。

罪魁祸首是那里的 25,000 多个文件占用了超过 3 个演出,所有这些文件都以 passenger-error-xxxxxx.html 模式命名。快速检查表明这是乘客无法启动应用程序时提供的标准错误页面。

根据其中一个文件中的消息,Passenger 无法启动应用程序,因为缺少 mysql2 gem 并且无法连接到数据库。

粗略估计,Passenger 似乎至少为每个请求保留这些文件,这是由于 ELB 的健康检查(每 30 秒请求一次 = 2880 个请求/天,Gemfile 在5 天,应少于 15,000 个请求)。

Passenger 将这些 HTML 文件保存在 /tmp 中的任何地方是否都有记录?

为什么要这样做?我们的配置有问题吗?

【问题讨论】:

    标签: ruby-on-rails passenger diskspace


    【解决方案1】:

    这里是乘客作者。乘客每次无法生成进程时都会创建这样一个文件,以允许管理员诊断问题。乘客在日志文件中写入一个条目,内容类似于“乘客无法生成进程,请查看 /tmp/passenger-error-xxxx.html 了解详细信息”。

    如果您有 25000 多个文件,那么这仅意味着Passenger 未能生成您的应用程序 25000 多次。您绝对应该去调查一下为什么Passenger 经常无法生成您的应用程序。

    【讨论】:

    • 好吧,如果第一次由于数据库配置错误而没有产生它并且我没有再次部署,它就不会产生第二次。或第三。或第 25,000 个。应用程序服务器不应该在周末填写/tmp,因为该应用程序从不工作。但我现在认为这是“记录在案的行为”:)
    • 乘客必须在某处记录此类事情。将整个报告写入普通日志文件并不容易阅读,而且会填满硬盘。如果你想清理旧的 /tmp 文件,你应该安装一个 /tmp 清理器。
    • 有没有机会改变这个文件的输出格式和目录?
    • Passenger 尊重 TMPDIR 环境变量,因此请确保启动 Web 服务器和 Passenger 并将 TMPDIR 设置为所需目录。
    • 无论如何,“让日志易于阅读”似乎并不是宏利的首要任务。你把这些该死的东西做成了 HTML 格式,这使得它们几乎无法阅读。到底是什么让你把它放在一个在无头机器上无法轻松阅读的格式?! (即 所有 个网络服务器,或多或少)
    【解决方案2】:

    如果您需要乘客并且您的应用程序一切正常,您可以通过创建一个 cronjob 来删除旧文件

    crontab -e
    

    并添加类似的东西

    # m h  dom mon dow   command
    23 3 * * * bash find /tmp/passenger-error-* -type f -mtime +1 -exec rm {} \;  > /dev/null 2>&1
    

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 2023-03-16
      • 2016-11-14
      相关资源
      最近更新 更多