1. 調整日志級別
Apache的LogLevel
指令控制日志的詳細程度,較低級別(如warn
、error
)會過濾掉調試、通知等無關信息,顯著減少日志文件大小和寫入開銷。編輯Apache主配置文件(/etc/httpd/conf/httpd.conf
或/etc/apache2/apache2.conf
),將默認的info
調整為warn
或error
(生產環境推薦error
),僅記錄關鍵錯誤和警告信息。
2. 啟用日志輪轉(logrotate)
日志輪轉可防止日志文件無限增長,避免占用大量磁盤空間。CentOS默認使用logrotate
工具,配置文件位于/etc/logrotate.d/httpd
。典型配置如下:
/var/log/httpd/*.log {
daily # 每天輪轉
missingok # 忽略缺失文件
rotate 14 # 保留14天日志
compress # 壓縮舊日志(節省空間)
notifempty # 空日志不輪轉
create 640 root adm # 新日志文件權限
}
此配置可自動管理日志生命周期,減少單文件大小和數量。
3. 禁用不必要的模塊
不必要的模塊會增加Apache的資源消耗,間接影響日志記錄性能。編輯配置文件,注釋掉未使用的模塊(如authn_file
、authz_user
等),僅保留必需模塊(如mod_rewrite
、mod_ssl
)。重啟Apache使配置生效。
4. 使用異步日志記錄
Apache 2.4及以上版本支持異步日志記錄,通過mod_log_config
模塊的管道(|
)語法將日志輸出到rotatelogs
工具,避免日志寫入阻塞主線程。配置示例如下:
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_log.%Y-%m-%d 86400"
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d 86400" combined
此方式將日志寫入操作轉移到后臺,提升Apache處理請求的效率。
5. 優化日志格式
選擇簡潔的日志格式可減少每條日志的寫入數據量。推薦使用combined
(包含常用字段,如客戶端IP、請求方法、URL、狀態碼等)或common
(僅包含基本請求信息)格式,避免verbose
等詳細格式。配置示例如下:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd/access_log combined
若無需Referer或User-Agent信息,可進一步簡化格式(如%h %l %u %t \"%r\" %>s %b
)。
6. 優化日志存儲
將日志文件存儲在高性能磁盤(如SSD)上,可提升日志寫入和讀取速度。若日志量極大,考慮使用網絡文件系統(如NFS)集中存儲,便于統一管理和備份,但需注意網絡延遲對性能的影響。
7. 監控與定期清理
使用du -sh /var/log/httpd/*.log
查看日志文件大小,ls -lh /var/log/httpd/*.log
查看詳細信息,定期清理舊日志(如超過30天的日志)??稍O置cron作業自動清理,例如:
0 0 * * * find /var/log/httpd/ -name "*.log" -mtime +30 -exec rm -f {} \;
此命令每天凌晨刪除30天前的日志文件,釋放磁盤空間。