【KUSANAGI9 + WordPress(TCDテーマ)】ログ肥大によるサーバー落ちと復旧の記録

やはり数年ぶりのサーバー引っ越しは、エラーが多いようです。

今回も備忘録としてメモしておきます。

■ 発生概要

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のループが原因であり、根本修正は子テーマ側コードで行う。

コメント

タイトルとURLをコピーしました