WordPress データベースエラー max_allowed_packet

土曜日の昼頃からサイトを丸一日ダウンさせてしまいました。発端はWordPressの挙動が何やら奇怪(おか)しい。。。管理画面に入れないところが始まりです。落ち着いてWordPressのデバッグをONにして様子を見ると、

WordPress データベースエラー: [Disk full (/var/tmp/#sql_3b3_0.MAI); waiting for someone to free some space… (errno: 28 “No space left on device”)]
SHOW FULL COLUMNS FROM `xxx`

Disk fullってマジですか(^_^;?server-root 使用%が100%!マジだーーー(笑)い事じゃないっ。個人的な小規模サーバで容量食い尽くすなんて想定外な出来事です。

#yum clean all

なんとか微弱に空きを確保し、duで大きいファイルを調べるとphpのエラーログがギャーGByte!恐る恐るcatでさらっと流すとナニコレ攻撃受けてるの?って感じの文字列がズラリ。[tail -f]して自サイトを回遊してみると、一回に吐き出されるエラーの量がとにかくヤヴァイ(^_^;こりゃ小規模の自鯖でも簡単に逝きますわ(笑)

しばらくエラーを眺めて気になる文脈を発見!

WordPress データベースエラー: Got a packet bigger than ‘max_allowed_packet’ bytes for query …

結論このエラーが原因だった訳ですが、my.cnfの[mysqld]に以下一文を追加してmysqlを再起動します。

max_allowed_packet=8M

mysqlの中に入って確認すると、デフォルト値(1M)からValueが8KKまで増えました(^_^)

> show variables like ‘max_allowed_packet’;

Variable_name Value
max_allowed_packet 8388608

何とかphpのエラーが止まり正常に戻った訳ですが、php_erros.logのローテーションをしていなかったがためにサイトをダウンさせてしまいました。しかしこのログの吐き出され方は異常でディスクIO的にも高負荷だし結果的に気づけて良かったのかも。WordPressをmysqlで運用の際はmax_allowed_packetの設定値には要注意ですね(^_^)