我在 EC2 上運行帶有 docker 的 rails 服務器,它有 64G 的容量。昨天網路服務崩潰了,我登錄服務器并不斷收到有關磁盤空間不足的訊息。我使用了df -hand du -sh /*/,結果是這樣的:


我洗掉了一些日志以釋放大約 3G 空間,但它在大約 30 分鐘后又滿了。我du -sh /*/再次執行命令,得到如下結果。

我看不到空間在哪里增加,/var檔案夾減少 3G 是唯一被改變的東西。
任何提示將不勝感激。
uj5u.com熱心網友回復:
問題之一可能是行程可能正在洗掉一些大檔案,但這些檔案可能仍在磁盤上,并且會在行程獲取SIGHUP或行程重新啟動時被洗掉。
您可以通過執行以下操作找到此類檔案:
lsof -n | grep -i deleted
這將顯示已洗掉檔案的串列和程序。您可以重新啟動該行程以釋放磁盤,也可以SIGHUP向該行程發送信號。
要查看占用磁盤空間的內容,您必須注意一些事項。您可以創建一個cron每 5 分鐘(或每 10 分鐘或 30 分鐘,您選擇)運行的作業,該作業執行以下操作:
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 生產日志輪換執行緒可以幫助您設定日志輪換。您可以積極地進行日志輪換以控制磁盤大小。
我可以告訴您的一件事是,如果您附加了一個價值 200 GB 的 EBS 卷,那么一年的成本將約為 200 美元,您將不得不在該問題上花費更少的緊急時間。如果您節省的時間在一年中產生的收入超過 200 美元,那么從長遠來看,獲取 EBS 卷并在其上存盤日志會便宜得多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/380097.html
