站点运营

站点运营:服務器磁盘與日誌增長自查,別让空間寫满拖慢抓取响應

服務器磁盘空間寫满时,網站可能先變慢,再出現寫入失敗和 5xx 错誤,蜘蛛抓取也會受影响。本文按目錄、日誌、缓存、备份和 inode 几個方向,梳理一套可执行的磁盘自查顺序,並给出日誌轮轉與监控的固定做法。

站点运营

站点运营:服務器磁盘與日誌增長自查,別让空間寫满拖慢抓取响應

服務器磁盘空間和日誌增長,平时不太起眼,出問题时却往往不是小問题。磁盘一旦寫满,網站可能先從响應變慢開始,接着出現資料库寫入失敗、缓存無法落盘、日誌寫不進去,嚴重时直接返回 5xx 错誤。對搜尋蜘蛛来说,抓取到的就是超时、错誤頁或半截内容,URL 發現和後續抓取都會受影响。

磁盘寫满时,抓取會先感受到什么

磁盘空間不足對抓取的影响不是一步到位的,通常有几個阶段:

  • 响應時間上升:資料库查询、文件讀寫變慢,頁面生成時間拉長。
  • 寫入失敗:日誌、缓存、會话文件寫不進去,程序開始报错。
  • 部分功能不可用:上传、评论、搜尋索引更新等依赖寫入的模块先出問题。
  • 直接返回错誤頁:Web 服務或應用返回 500、502、503,蜘蛛收到错誤狀態碼。

如果站点同时開了爬虫日誌,磁盘寫满後日誌也會中断,排查时反而缺少记錄。所以磁盘和日誌增長要放在日常运维里看,而不是等报警了再處理。

先看哪些目錄最容易膨胀

不同站点结构不一样,但下面几類文件通常是磁盘增長的主要来源:

  • 訪問日誌和错誤日誌:Web 服務器、應用、資料库各自有日誌,長期不切割會一直追加。
  • 應用日誌:調试日誌、任務日誌、第三方接口日誌,容易因為一次異常大量刷寫。
  • 缓存文件:頁面缓存、對象缓存、模板编译缓存,數量多时占用不小。
  • 临时文件:系統 /tmp、上传临时目錄、導出文件、压缩包。
  • 备份文件:本地备份如果長期不清理,往往比站点本身還大。
  • 上传目錄:图片、视频、附件随着内容更新持續增加。
  • 資料库文件:資料文件、binlog、慢查询日誌、临时表。

還有一個容易被忽略的指标是 inode。即使剩余空間看起来不少,小文件過多也可能把 inode 用完,導致無法建立新文件。

一次可执行的磁盘自查顺序

  1. 先看整体使用率:確認是哪個分区接近寫满,不要只看根分区。
  2. 按目錄排序:從站点根目錄、日誌目錄、缓存目錄、备份目錄逐层看占用。
  3. 找出大文件:關注單個特別大的日誌、备份包、導出文件。
  4. 检查 inode 使用率:如果空間够但 inode 高,重点找小文件堆积的目錄。
  5. 检查日誌轮轉:確認 logrotate 或應用自带的轮轉是否生效,保留天數是否合理。
  6. 检查备份策略:本地备份保留几份、是否压缩、是否同步到异地。
  7. 检查临时目錄:上传临时文件、會话文件、導出文件是否定期清理。
  8. 检查資料库:binlog 是否按策略清理,慢查询日誌是否一直開着且未切割。

這個顺序的好處是先定位再動手,避免一上来就批量刪除,把有用的文件也清掉。

清理时容易踩的坑

  • 直接刪除正在寫入的日誌文件:文件句柄没释放,空間不會立刻回收,需要让進程重新打開日誌或先清空再轮轉。
  • 把备份当垃圾清掉:清理前確認备份可用,至少保留一份近期可恢复的副本。
  • 誤删上传文件:上传目錄里可能混着临时文件和正式附件,按扩展名和修改時間篩選更稳妥。
  • 一次清空全部缓存:缓存清空後請求會集中回源,短時間压力上升,可能让抓取也變慢。
  • 忽略 inode:只看容量不看 inode,問题會反复出現。

把日誌轮轉和监控固定下来

磁盘問题很难靠临时清理解决,更稳的做法是把它變成固定動作:

  • 為 Web、應用、資料库日誌設定轮轉,按天或按大小切割,保留 7 到 30 天,歷史日誌压缩归档。
  • 為磁盘使用率、inode 使用率設定监控阈值,比如 80% 提醒、90% 告警。
  • 把本地备份保留策略寫清楚,定期检查恢复流程,而不是只看备份文件在不在。
  • 對临时目錄和上传目錄設定清理任務,避免只增不减。

這些動作不需要很复杂,但要坚持。對站点运营来说,磁盘稳定意味着頁面能正常生成、日誌能持續记錄、蜘蛛来訪时不會撞上错誤頁。

磁盘自查的目标不是把空間清到最大,而是让寫入、日誌和抓取记錄保持连續。留出余量,比事後救火更省事。