Rails服务器磁盘空间不断显示空间不足[关闭]
Posted
技术标签:
【中文标题】Rails服务器磁盘空间不断显示空间不足[关闭]【英文标题】:Rails server disk space keeps showing out of space [closed] 【发布时间】:2022-01-16 15:03:24 【问题描述】:我在 EC2 上运行带有 docker 的 Rails 服务器,它有 64G 的容量。昨天网络服务崩溃了,我登录服务器并不断收到有关磁盘空间不足的消息。我用了df -h
和du -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 -h
和mount
信息,谢谢。
@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服务器磁盘空间不断显示空间不足[关闭]的主要内容,如果未能解决你的问题,请参考以下文章