为什么 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
我们其中一台服务器上的磁盘已满。分析表明,大部分 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