站点运营的日常工作里,磁盘空間是那種平时没人看、出事才知道的指标。它不像證书過期那样有明确提醒,也不像 5xx 那样立刻被用戶投诉,而是先悄悄让寫入變慢,再让响應排队,最後才演變成整站不可用。對依赖搜尋蜘蛛持續訪問的站点来说,這段時間差恰好是最容易丢抓取量的窗口。
磁盘寫满时,最先出問题的往往不是“打不開”
磁盘接近满载时,站点通常不會马上返回错誤頁,而是出現一系列让人摸不着头脑的現象:
- 頁面生成變慢,動態頁尤其明顯,因為模板缓存和會话文件寫不進去;
- 搜尋蜘蛛訪問时偶發超时或 5xx,日誌里能看到明顯的响應時間波動;
- 後台發布内容失敗,或者内容寫入了但附件没存下来;
- 日誌本身也寫不進去,于是“出問题”的那段時間恰好没有日誌可查。
這几種現象的共同点是:来源看似分散,根源却都指向同一個磁盘水位。所以排查抓取下降时,先看一眼磁盘用量,往往比翻十几頁日誌更快。
三個常见的空間占用大戶
- 訪問日誌與错誤日誌:被掃描器掃、被爬虫高频抓取、被接口轮询,都會以文本形式累积在磁盘上。一個訪問量中等的站点,一年不切割的原始日誌就能吃掉几十 GB。
- 歷史备份文件:自動备份如果只做“生成”不做“淘汰”,每天一份、每份几百 MB,很快就能堆满整個分区,而且這些文件通常還放在同一块盘上。
- 缓存與临时文件:頁面缓存、缩略图缓存、會话文件、上传临时目錄,平时不起眼,一旦清理任務失敗或者進程異常登出,残留文件會成規模堆积。
日誌切割與保留策略
按天切割,按大小兜底
優先按天切割,同时设一個体积上限。某些目錄被高频掃描时,一天的日誌量可能異常大,只按天切會让單文件大到难以打開。按天加按大小双重触發,既方便定位某一天的抓取情况,也避免出現打不開的巨型文件。
保留窗口與實际用途對齐
日誌保留多久,取决于你真正會回看多久。只用于日常抓取观察的,保留 7 到 30 天通常够用;需要做季度對比或者事故回溯的,可以定期把聚合後的統計结果單獨存下来,原始明细則不必長期保留。压缩後再归档,能顯著降低占用。
一次可执行的巡检清單
- 查看各分区使用率,重点關注日誌、备份、缓存所在的分区,而不是只看根分区。
- 按目錄統計体积,找出排名前十的大目錄,確認每一個都有明确归属。
- 检查日誌切割任務是否真的在跑,最近一次切割产物是否存在、是否可讀。
- 核對备份文件數量與保留策略是否一致,刪除失敗的任務要單獨记錄。
- 清理临时目錄和過期會话文件,確認清理任務有日誌、有成功率记錄。
- 检查資料库的二進制日誌、慢查询日誌、临时表空間,這些也常常在同一块盘上。
- 確認磁盘水位回到安全线以下後,再去看抓取日誌的响應時間是否同步恢复。
告警要设阈值,不要只设“挂了”
只监控“站点是否可訪問”,等于只在结果层面报警。更實用的做法是给磁盘水位设两級阈值:超過七成时提醒,超過八成五时告警,並附带占用增長最快的目錄。這样你拿到告警时,已经知道该去清理什么,而不是從头排查。
磁盘清理不是一次性任務,它更像一個需要持續微調的配置項。真正省事的做法,是让切割、归档、淘汰三件事都自動化,並把它們的执行结果纳入日常巡检。
最後提醒一句:清理前先確認哪些日誌還有用。有些站点在排查抓取異常时,恰好需要最近几天的原始日誌,如果清理策略把窗口压得太短,關键时刻反而没有依據。空間和可追溯性之間,留一点余量更稳妥。