站点运营

站点运营:服務器磁盘與日誌清理自查,別让日誌文件把空間寫满

磁盘空間是站点运营里容易被忽略的基础項。日誌、临时文件、舊备份和缓存會持續累积,一旦寫满分区,轻則图片上传失敗、後台报错,重則資料库無法寫入、頁面返回 5xx,蜘蛛抓取也會中断。本文梳理常见占用来源、保留周期設定、清理前後的检查步骤和简單的监控提醒,帮助把這項维護變成固定動作。

站点运营

站点运营:服務器磁盘與日誌清理自查,別让日誌文件把空間寫满

很多站点运营問题看起来是“程序 bug”,追下去却是磁盘满了。服務器不會在空間充足时提醒你,等到寫入失敗,訪客看到的是 500,後台看到的是各種报错,蜘蛛抓取也會因為响應異常而降低频率。把磁盘和日誌纳入日常自查,比事後救火省力得多。

磁盘被寫满时,站点會出現哪些信号

不同程序表現不一样,但通常有一些共同点:

  • 图片、附件上传失敗,提示“無法寫入”或“移動文件失敗”。
  • 後台登入正常,但儲存文章、修改設定时报資料库错誤。
  • 頁面間歇性返回 500 或 503,刷新後又可能恢复。
  • 缓存文件寫不進去,頁面加载變慢或样式错乱。
  • 資料库停止寫入,甚至無法啟動。
  • 蜘蛛抓取日誌里出現大量 5xx,抓取量随之下降。

如果同时出現上传失敗和資料库报错,優先检查磁盘使用率,而不是先改代碼。

常见的空間占用来源

1. 訪問日誌與错誤日誌

訪問日誌、错誤日誌、PHP 慢日誌、資料库慢日誌都會持續增長。流量越大、爬虫抓取越频繁,日誌增長越快。有些服務器預設不做轮轉,几個月就能占掉几十 GB。

2. 临时文件與缓存

程序生成的缩略图、编译模板、會话文件、對象缓存轉存文件,如果只增不减,也會慢慢堆积。部分缓存目錄在異常中断後會残留大量碎片文件。

3. 本地备份與導出文件

資料库導出、整站打包、插件生成的备份,常常被放在網站根目錄或服務器本地。一個几 GB 的备份文件既占空間,又可能被外部訪問到,属于安全和容量的双重隐患。

4. 資料库日誌與二進制日誌

MySQL 的 binlog、慢查询日誌、中繼日誌如果不设保留周期,會長期占用空間。主從环境里,binlog 還可能因為複製延迟而积压。

5. 上传目錄與垃圾文件

用戶上传後未清理的临时图片、編輯器粘贴产生的重复附件、被刪除文章遗留的媒体文件,都會留在 uploads 目錄里。它們不一定影响訪問,但會持續吃空間。

清理前的检查步骤

  1. 先用 df -h 看分区使用率,再用 du -sh 從根目錄逐层定位大目錄。
  2. 確認要清理的目錄属于日誌、缓存還是备份,避免誤删正在使用的資料文件。
  3. 把备份文件先下载到本地或對象存储,確認可恢复後再刪除服務器上的副本。
  4. 清理日誌时優先使用轮轉和截断,而不是直接刪除正在寫入的文件。
  5. 清理後复查服務狀態、上传功能和資料库连接。

設定保留周期,比反复手動清理更可靠

手動清理只能解决当下問题。更稳妥的做法是给每類文件设定保留周期:

  • 訪問日誌保留 7 到 30 天,按天轮轉並压缩。
  • 错誤日誌保留 30 天,方便回溯偶發問题。
  • 本地备份只留最近 1 到 2 份,並且每日同步到异地。
  • 缓存目錄定期清理,或設定程序自動回收。
  • 資料库 binlog 按空間和天數双重限制,避免無限增長。

這些周期没有统一标准,取决于服務器容量和业務需求,關键是寫進维護計划並真的执行。

加一個简單的容量提醒

不需要复杂的监控系統,先用一條定时任務检查磁盘使用率即可。比如使用率超過 80% 时發邮件或消息提醒,超過 90% 时告警。這样可以在寫入失敗之前介入,而不是等訪客和蜘蛛先發現問题。

磁盘容量不會像代碼错誤那样立刻暴露,但一旦寫满,影响面往往覆盖前台、後台和資料库。把它纳入例行检查,属于成本低、收益稳定的基础维護。

几個不要做的操作

  • 不要直接刪除正在寫入的日誌文件,可能導致進程句柄異常。
  • 不要在未確認备份可用的情况下清空資料库日誌。
  • 不要把备份放在網站根目錄並提供公開下载。
  • 不要為了腾空間删掉程序依赖的临时目錄结构。
  • 不要只看總容量,忽略 inode 被小文件占满的情况。

站点运营里的很多問题,最後都會落到服務器基础狀態上。磁盘和日誌清理不是一次性任務,而是需要定期复查的习惯。把使用率、保留周期和清理记錄固定下来,出現異常时才有余力處理真正复杂的問题。