站点运营中,磁盘空間常常是最容易被忽略的一項。平时頁面能打開、後台能登入,大家就不太關注服務器還剩多少空間。直到某天日誌寫满分区,資料库無法寫入,缓存服務異常,甚至图片上传失敗,才發現問题不是出在代碼,而是出在容量。
日誌是磁盘增長的主要来源之一。訪問日誌、错誤日誌、抓取日誌、應用調试日誌、任務队列日誌,都會随着時間累积。蜘蛛抓取频繁、接口調用多、異常反复出現时,日誌增長速度會明顯加快。如果只開不關,只寫不清,再大的磁盘也會被慢慢吃掉。
先看几個容易出問题的位置
- 系統盘或資料盘的使用率,是否長期高于 80%。
- 日誌目錄總大小,以及單個日誌文件是否已经超過预期。
- 是否存在大量小文件,導致 inode 被占满。
- 临时目錄、上传临时文件、备份文件是否長期未清理。
- 資料库慢查询日誌、二進制日誌是否設定了保留周期。
這些問题不一定會立刻让站点下线,但會降低余量。一旦遇到流量波動、批量任務或異常刷量,磁盘很快就會被寫满。對站点运营来说,稳定性比事後救火更重要。
日誌轮轉要落到配置上
日誌轮轉不是手動删文件,而是按規則切割、压缩、归档和刪除。常见做法是用系統自带的 logrotate,或者應用自己的日誌组件。關键是規則要明确:多久切一次、保留多少份、压缩不压缩、什么时候刪除。
- 按天或按大小切割,避免單個文件過大。
- 切割後压缩舊日誌,节省空間。
- 設定保留天數或保留份數,不要無限保留。
- 轮轉後通知應用重新打開日誌文件,避免繼續寫入已刪除的文件句柄。
- 定期驗證轮轉是否真的生效,而不是只看配置文件。
磁盘告警不是等满了才看,而是要在使用率持續上升时就開始處理。留出余量,才有時間排查和調整。
清理时注意別誤删
清理日誌和临时文件时,先確認文件是否還在被進程寫入。直接刪除正在寫入的日誌,可能導致磁盘空間没有立即释放。更稳妥的做法是清空内容或使用轮轉工具處理。對于資料库二進制日誌、备份文件,要確認保留策略和恢复需求,不能為了省空間把恢复能力也删掉。
如果站点有多個环境,測試环境和预發布环境也容易堆积日誌。它們不直接服務用戶,但同样占用磁盘。建议把清理規則统一纳入维護計划,而不是只盯着生产环境。
容量趋势比單点數字更有用
只看今天用了多少不够。记錄一周或一個月的磁盘使用趋势,可以判断增長是平稳還是突然加速。如果某段時間日誌量明顯上升,可以结合抓取记錄、错誤日誌和訪問来源排查原因。是蜘蛛抓取變多,還是接口異常反复重试,還是某個任務輸出了大量調试信息。
- 為磁盘使用率設定分級告警,比如 70%、85%、95%。
- 记錄日誌目錄大小變化,观察增長斜率。
- 對異常增長設定單獨的监控項,避免被整体平均掩盖。
- 定期检查备份目錄和临时目錄,確認没有遗留大文件。
把检查寫進日常运维
站点运营不需要每天手動翻日誌,但需要有一套可执行的检查項。可以每周看一次磁盘使用率、inode 使用率、日誌目錄大小和轮轉记錄。每月检查一次保留策略是否合理,是否有该清理没清理的归档。遇到站点變慢、上传失敗、寫入报错时,也先把磁盘空間作為排查項之一。
磁盘空間和日誌轮轉看起来是服務器维護的细节,但它直接影响站点能否稳定執行。提前設定規則、保留余量、定期核對,比等到服務異常再處理要省事得多。