プロジェクト

全般

プロフィール

WEBサーバーのログの肥大化対応 » 履歴 » バージョン 2

蒲池 晃, 2026/06/29 03:50

1 1 蒲池 晃
h1. WEBサーバーのログの肥大化対応
2 1 蒲池 晃
PHPエラーログ肥大化 調査・対応記録(実施内容)
3 1 蒲池 晃
4 1 蒲池 晃
■ 概要
5 1 蒲池 晃
サーバディスク使用率上昇の調査を実施した結果、
6 1 蒲池 晃
PHP-FPMエラーログの肥大化を確認。
7 1 蒲池 晃
本Wikiでは、原因特定および対処までの実施内容を整理する。
8 1 蒲池 晃
9 1 蒲池 晃
■ 調査フェーズ
10 1 蒲池 晃
11 1 蒲池 晃
■ ① ディスク使用量の確認
12 1 蒲池 晃
全体の使用量を確認
13 1 蒲池 晃
df -h
14 1 蒲池 晃
15 1 蒲池 晃
16 1 蒲池 晃
ディレクトリ単位で使用量を調査
17 1 蒲池 晃
sudo du -xhd1 / 2>/dev/null | sort -h
18 1 蒲池 晃
19 1 蒲池 晃
20 1 蒲池 晃
確認結果:
21 1 蒲池 晃
22 1 蒲池 晃
/var 配下の使用率が高い
23 1 蒲池 晃
24 1 蒲池 晃
25 1 蒲池 晃
■ ② 詳細調査(/var配下)
26 1 蒲池 晃
sudo du -xhd1 /var 2>/dev/null | sort -h
27 1 蒲池 晃
28 1 蒲池 晃
29 1 蒲池 晃
確認結果:
30 1 蒲池 晃
31 1 蒲池 晃
/var/log が大きい
32 1 蒲池 晃
33 1 蒲池 晃
34 1 蒲池 晃
■ ③ ログディレクトリ確認
35 1 蒲池 晃
sudo du -xhd1 /var/log 2>/dev/null | sort -h
36 1 蒲池 晃
37 1 蒲池 晃
38 1 蒲池 晃
確認結果:
39 1 蒲池 晃
40 1 蒲池 晃
php-fpm ディレクトリが肥大
41 1 蒲池 晃
42 1 蒲池 晃
43 1 蒲池 晃
■ ④ ログファイル確認
44 1 蒲池 晃
ls -lh /var/log/php-fpm/
45 1 蒲池 晃
46 1 蒲池 晃
47 1 蒲池 晃
確認結果:
48 1 蒲池 晃
49 1 蒲池 晃
www-error.log が数百MB以上
50 1 蒲池 晃
ローテーションファイルも複数存在
51 1 蒲池 晃
52 1 蒲池 晃
53 1 蒲池 晃
■ ⑤ ログ内容確認
54 1 蒲池 晃
tail -100 /var/log/php-fpm/www-error.log
55 1 蒲池 晃
56 1 蒲池 晃
57 1 蒲池 晃
確認結果:
58 1 蒲池 晃
59 1 蒲池 晃
同一Warningが大量出力
60 1 蒲池 晃
短時間でログ増加
61 1 蒲池 晃
62 1 蒲池 晃
63 1 蒲池 晃
■ ⑥ 対象ログの特定
64 1 蒲池 晃
主なエラー:
65 1 蒲池 晃
66 1 蒲池 晃
Undefined variable
67 1 蒲池 晃
Undefined array key
68 1 蒲池 晃
Trying to access array offset on null
69 1 蒲池 晃
70 1 蒲池 晃
71 1 蒲池 晃
■ ⑦ 発生箇所の特定
72 1 蒲池 晃
ログ参照より対象ファイルを特定:
73 2 蒲池 晃
/wp-content/themes/----/component/xxx.php
74 1 蒲池 晃
75 1 蒲池 晃
76 1 蒲池 晃
■ 原因分析
77 1 蒲池 晃
78 1 蒲池 晃
■ ① 同一エラーの多重出力
79 1 蒲池 晃
80 1 蒲池 晃
ループ中で同一Warningが繰り返し出力
81 1 蒲池 晃
1リクエストで複数回発生
82 1 蒲池 晃
83 1 蒲池 晃
84 1 蒲池 晃
■ ② PHP Warningの蓄積
85 1 蒲池 晃
86 1 蒲池 晃
PHP8の仕様によりWarningが厳格化
87 1 蒲池 晃
ログ出力量増加
88 1 蒲池 晃
89 1 蒲池 晃
90 1 蒲池 晃
■ ③ デバッグログ出力の確認
91 1 蒲池 晃
ログ内に以下を確認:
92 1 蒲池 晃
+++++ Array
93 1 蒲池 晃
debug
94 1 蒲池 晃
post_set::
95 1 蒲池 晃
96 1 蒲池 晃
97 1 蒲池 晃
考察:
98 1 蒲池 晃
99 1 蒲池 晃
デバッグ用出力(print_r / error_log等)が本番動作中
100 1 蒲池 晃
出力データ量がログ増加を加速
101 1 蒲池 晃
102 1 蒲池 晃
103 1 蒲池 晃
■ 対応フェーズ
104 1 蒲池 晃
105 1 蒲池 晃
■ ① PHPログ出力制御
106 1 蒲池 晃
設定ファイル修正:
107 1 蒲池 晃
vi /etc/php.ini
108 1 蒲池 晃
109 1 蒲池 晃
110 1 蒲池 晃
設定変更:
111 1 蒲池 晃
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED
112 1 蒲池 晃
display_errors = Off
113 1 蒲池 晃
log_errors = On
114 1 蒲池 晃
115 1 蒲池 晃
116 1 蒲池 晃
反映:
117 1 蒲池 晃
systemctl restart php-fpm
118 1 蒲池 晃
119 1 蒲池 晃
120 1 蒲池 晃
■ ② ログファイル初期化
121 1 蒲池 晃
truncate -s 0 /var/log/php-fpm/www-error.log
122 1 蒲池 晃
123 1 蒲池 晃
124 1 蒲池 晃
■ ③ ログローテーション設定確認
125 1 蒲池 晃
対象:
126 1 蒲池 晃
/etc/logrotate.d/php-fpm
127 1 蒲池 晃
128 1 蒲池 晃
129 1 蒲池 晃
設定例確認:
130 1 蒲池 晃
/var/log/php-fpm/*.log {
131 1 蒲池 晃
  daily
132 1 蒲池 晃
  rotate 7
133 1 蒲池 晃
  compress
134 1 蒲池 晃
  delaycompress
135 1 蒲池 晃
  missingok
136 1 蒲池 晃
  notifempty
137 1 蒲池 晃
}
138 1 蒲池 晃
139 1 蒲池 晃
140 1 蒲池 晃
■ ④ 既存ログ圧縮対応
141 1 蒲池 晃
(必要に応じて実施)
142 1 蒲池 晃
gzip /var/log/php-fpm/www-error.log-*
143 1 蒲池 晃
144 1 蒲池 晃
145 1 蒲池 晃
■ 効果確認
146 1 蒲池 晃
147 1 蒲池 晃
■ ログ出力量確認
148 1 蒲池 晃
ls -lh /var/log/php-fpm/
149 1 蒲池 晃
150 1 蒲池 晃
151 1 蒲池 晃
確認結果:
152 1 蒲池 晃
153 1 蒲池 晃
ログ増加が抑制されていることを確認
154 1 蒲池 晃
155 1 蒲池 晃
156 1 蒲池 晃
■ ディスク使用率確認
157 1 蒲池 晃
df -h
158 1 蒲池 晃
159 1 蒲池 晃
160 1 蒲池 晃
確認結果:
161 1 蒲池 晃
162 1 蒲池 晃
使用率改善
163 1 蒲池 晃
164 1 蒲池 晃
165 1 蒲池 晃
■ 結果
166 1 蒲池 晃
167 1 蒲池 晃
168 1 蒲池 晃
169 1 蒲池 晃
170 1 蒲池 晃
171 1 蒲池 晃
172 1 蒲池 晃
173 1 蒲池 晃
174 1 蒲池 晃
175 1 蒲池 晃
176 1 蒲池 晃
177 1 蒲池 晃
178 1 蒲池 晃
179 1 蒲池 晃
180 1 蒲池 晃
181 1 蒲池 晃
182 1 蒲池 晃
183 1 蒲池 晃
184 1 蒲池 晃
185 1 蒲池 晃
186 1 蒲池 晃
187 1 蒲池 晃
188 1 蒲池 晃
項目状態ログ肥大化抑制ディスク使用率改善システム影響解消
189 1 蒲池 晃
190 1 蒲池 晃
■ まとめ
191 1 蒲池 晃
192 1 蒲池 晃
今回の肥大化は以下の挙動によるもの:
193 1 蒲池 晃
194 1 蒲池 晃
PHP Warningの大量出力
195 1 蒲池 晃
同一コードによる繰り返し発生
196 1 蒲池 晃
デバッグ出力の混在
197 1 蒲池 晃
198 1 蒲池 晃
199 1 蒲池 晃
対処として:
200 1 蒲池 晃
201 1 蒲池 晃
ログ出力レベルの制御
202 1 蒲池 晃
ログローテーション管理強化
203 1 蒲池 晃
既存ログのクリア/圧縮
204 1 蒲池 晃
205 1 蒲池 晃
を実施し、正常状態へ復帰した。