站点运营

站点运营:日誌與磁盘空間自查,別让服務器先被寫满

訪問日誌、错誤日誌、缓存和备份文件會随着時間不断堆积,磁盘寫满往往不是突然發生的。本文整理了磁盘占用的排查顺序、日誌保留窗口的設定思路,以及自動清理與容量告警的配置方法,帮你在故障發生前把空間腾出来。

站点运营

站点运营:日誌與磁盘空間自查,別让服務器先被寫满

站点跑上一段時間後,訪問日誌、错誤日誌、缓存文件和临时文件會慢慢堆积。磁盘寫满时,轻則後台打不開、图片上传失敗,重則資料库無法寫入,整站返回 500。這類故障很少毫無征兆,通常提前几天甚至几周就有信号。

磁盘寫满前的几個信号

  • 後台操作變慢,儲存文章偶尔失敗;
  • 日誌里開始出現 No space left on device、disk quota exceeded 之類的關鍵詞;
  • 图片或附件上传到一半报错;
  • 資料库连接正常,但寫入失敗;
  • 面板或监控图表里的磁盘占用曲线持續上扬,没有回落。

這些提示出現时,說明余量已经不多,最好当天處理,別拖到周末。

先看哪里最占空間

登入服務器後,按体积從大到小逐层排查,比盲目删文件安全得多。常用思路是先用 du -sh 看各目錄總量,再進到最大的目錄繼續往下看。

  1. 網站根目錄下的日誌文件夹,尤其是按天生成的 access.log、error.log;
  2. 缓存目錄與临时目錄,比如框架生成的 cache、tmp;
  3. 备份文件,本地留一份、异地留一份就够,不要堆几十份;
  4. 上传目錄,检查是否有異常大的文件或重复文件;
  5. 資料库文件與慢查询日誌;
  6. 系統日誌,如 /var/log 下的 messages、syslog、auth.log。

日誌保留多久合适

日誌既是排查故障的依據,也是分析蜘蛛抓取行為的資料源。直接清空虽然立刻腾出空間,但之後想回看某天的抓取情况就没有依據了。比較稳妥的做法是设一個保留窗口:

  • 訪問日誌保留 30 到 90 天,覆盖一次完整的内容更新周期;
  • 错誤日誌可以留得更久,因為报错往往隔一段時間才复現;
  • 超出窗口的日誌先压缩归档,压缩後仍占空間就轉移到別的机器或對象存储;
  • 归档文件也要定期清理,別让“归档”變成另一個垃圾桶。

不少服務器面板自带日誌轮轉功能,配置好按天切分和保留份數即可,不必手工删。

把自動清理配置起来

手工清理只能救急,長期還是要靠自動任務。可以寫一個简單的脚本,用 find 按修改時間刪除過期日誌,或者用系統自带的日誌轮轉工具配置保留份數。配置完成後建议先手動执行一次,確認刪除范围符合预期,再放進計划任務。

刪除操作前先確認路径,尤其是带通配符的命令。寫成 rm -rf /var/log/* 和寫错一個字符的後果可能完全不同,能先备份就先备份。

顺手加一個容量告警

與其等訪客反馈打不開,不如让监控提前告诉你。大部分可用性监控都支持磁盘占用阈值告警,设在 80% 到 90% 之間比較合适,既留出處理時間,也不至于频繁誤报。

還可以把日誌分析、备份核對、空間检查放進同一個维護节奏:每月固定一天看磁盘占用、確認日誌轮轉正常、驗證备份是否可恢复。這些動作本身不复杂,难的是持續做下去。

蜘蛛池、URL 發現這類工作能開展的前提,是站点本身稳定可訪問、日誌能被正常记錄。服務器先活着,後面的抓取與收錄分析才有意义。