Rails服务器磁盘空间不断显示空间不足[关闭]

Posted

技术标签:

【中文标题】Rails服务器磁盘空间不断显示空间不足[关闭]【英文标题】:Rails server disk space keeps showing out of space [closed] 【发布时间】:2022-01-16 15:03:24 【问题描述】:

我在 EC2 上运行带有 docker 的 Rails 服务器,它有 64G 的容量。昨天网络服务崩溃了,我登录服务器并不断收到有关磁盘空间不足的消息。我用了df -hdu -sh /*/,结果是这样的:

我删除了一些日志以释放大约 3G 空间,但大约 30 分钟后又满了。我再次执行命令du -sh /*/,结果如下。

我看不到空间在哪里增加,/var 文件夹减少 3G 是唯一被更改的地方。

任何提示将不胜感激。

【问题讨论】:

对于Unix & Linux 来说可能是一个更好的问题,因为它更多的是系统管理而不是编程。 @david0116 你能分享df -h 命令的完整输出吗?你能添加mount的输出吗? df -h 的输出显示 NVMe 磁盘,它通常连接到 EC2。您不太可能因此而运行您的操作系统。通常在 EBS 卷之外运行操作系统。 du -sh 的输出来自您的操作系统,加起来不超过 62G。 同时检查lsof -n | grep -i deleted。如果删除了大文件,它们可能会在关联进程重新启动时释放磁盘。 @zedfoxus 好的,我已经添加了df -hmount 信息,谢谢。 @zedfoxus lsof -n | grep -i deleted 似乎有效。它释放了42G的额外空间。我杀死了 ruby​​ production.log 进程。 【参考方案1】:

其中一个问题可能是进程可能正在删除一些大文件,但这些文件可能仍在磁盘上,并且会在进程收到 SIGHUP 或进程重新启动时被删除。

您可以通过以下方式找到此类文件:

lsof -n | grep -i deleted

这将向您显示已删除文件的列表和进程。您可以重新启动该进程以释放磁盘,也可以向该进程发送SIGHUP 信号。

要查看占用磁盘空间的内容,您必须注意一些事项。您可以创建一个每 5 分钟(或每 10 分钟或 30 分钟,您可以选择)运行的 cron 作业:

date >> /tmp/deleted-files.txt && lsof -n | grep -i deleted >> /tmp/deleted-files.txt

分析文件并查看文件是否被长期创建和删除。

如果您确定了持续增长的目录,您还可以创建一个每隔几分钟运行一次的 cron 作业,以将文件列表保存在临时文件中,如下所示

date >> /tmp/file-list.txt && ls -ltrh >> /tmp/file-list.txt

这样您就可以查看正在生成的文件并查看其内容。可能有人正在调试模式下登录。

如果您使用的是 Ruby on Rails (RoR),Ruby on Rails production log rotation 线程可以帮助您设置日志轮换。您可以积极地进行日志轮换以掌握磁盘大小。

我可以告诉您的一件事是,如果您附加一个价值 200 GB 的 EBS 卷,那么一年的成本将约为 200 美元,您将不得不花更少的时间紧急处理这个问题。如果您节省的时间在一年中产生的收入超过 200 美元,那么从长远来看,获得 EBS 卷并在其中存储日志将是一个更便宜的提议。

【讨论】:

以上是关于Rails服务器磁盘空间不断显示空间不足[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

vsphere 虚拟机,磁盘空间不足,无法开机

linux磁盘空间不足

vmware中扩充磁盘

vsan提示磁盘空间不足

Mac App Store 上的 Xcode 无法安装,显示磁盘空间不足

急求帮助:安装MATLAB2014b时替换install.jar文件时显示空间不足怎么办 十分感谢