为什么 Passenger 将 passenger-error-*.html 文件保存在 /tmp 中?

Why does Passenger keep passenger-error-*.html files in /tmp?

我们其中一台服务器上的磁盘已满。分析表明,大部分 space 浪费在了 /tmp

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

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

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

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

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

这里是客作者。 Passenger 每次未能生成进程时都会创建这样一个文件,目的是让管理员诊断问题。 Passenger 在日志文件中写了一条类似 "Passenger failed to spawn a process, look in /tmp/passenger-error-xxxx.html for details".

的条目

如果您有 25000+ 个文件,则意味着 Passenger 未能生成您的应用 25000+ 次。您绝对应该去调查为什么 Passenger 如此频繁地无法生成您的应用程序。

如果您需要乘客并且您的应用程序一切正常,您可以通过使用

创建一个 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