やはり数年ぶりのサーバー引っ越しは、エラーが多いようです。
今回も備忘録としてメモしておきます。
■ 発生概要
2025年10月中旬、WordPressサーバー(KUSANAGI9, CentOS Stream 9)で断続的なダウンが発生。
原因調査の結果、/home/kusanagi/〇〇〇/log/nginx/ssl_error.log が 数GB〜数十GB規模に肥大化 しており、ディスク容量の圧迫とPHP-FPMリソース過多で、一時的に応答不能状態となっていた。
■ 環境情報
KUSANAGI Version: 9.6.14-1.el9
OS: CentOS Stream 9
Webサーバー: nginx129(active)
PHP: php-fpm 8.1.33(active)
DB: MariaDB 10.6.23(active)
Apache: inactive(使用せず)
WAF: off
SELinux: off(permanent)
■ 使用テーマ
親テーマ: CORE (tcd027) Version 4.1.1(PHP8.3まで対応)
子テーマ: core_tcd027_〇〇〇(カスタム版)
WordPress: マルチサイト構成
■ 主な症状
サイトの断続的な応答停止
再起動後も /home/kusanagi/〇〇〇/log/nginx/ssl_error.log が即座に肥大化
PHPエラー出力がループしていた(archive.php関連)
■ 対応手順
① ログ肥大確認
ls -lh /home/kusanagi/〇〇〇/log/nginx/
結果:ssl_error.log.2025-10-17-0235 が約 5.6GB
② 不要ログ削除(安全な日付付きファイルのみ)
rm -f /home/kusanagi/〇〇〇/log/nginx/ssl_error.log.2025-10-17-0235
③ nginx 稼働確認
kusanagi status
→ nginx / php-fpm / mariadb すべて active
④ 自動ローテート設定(logrotate導入)
/etc/logrotate.d/〇〇〇
-nginx を新規作成:
/home/kusanagi/〇〇〇/log/nginx/*.log {
daily
size 200M
rotate 14
compress
delaycompress
missingok
notifempty
dateext
sharedscripts
create 0640 httpd root
postrotate
/bin/systemctl kill -s USR1 nginx 2>/dev/null || \
/bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || true
endscript
}
⑤ 動作確認(ドライラン)
logrotate -dv /etc/logrotate.d/〇〇〇-nginx
→ 構文・動作ともに正常。
⑥ 本番実行(即時ローテート)
logrotate -v /etc/logrotate.d/〇〇〇-nginx
→ ssl_access.log が ssl_access.log-20251017 に分割され、新ログ作成を確認。
■ 対応結果
巨大ログ削除によりディスク圧迫解消。
logrotate 自動運用により再発防止。
nginx / php-fpm / MariaDB すべて安定稼働中。
WordPress テーマ(CORE)は PHP8.1対応済み。
子テーマ内 PHPコードで Warning が出続けており、次回以降 root cause の特定を予定。
■ 今後の対策
/home/kusanagi/〇〇〇/log/nginx/ のサイズ監視を継続
WordPress 子テーマ archive.php の PHP8非互換コード修正
logrotate の定期実行結果を journalctl で確認
(必要に応じて)WAF・キャッシュ設定の再最適化
■ 備考
KUSANAGI環境では、Apache(httpd)は停止のままでOK(nginxで十分)。
logrotate設定はサーバー再起動後も有効。
大容量ログ発生はPHP Warningのループが原因であり、根本修正は子テーマ側コードで行う。
コメント