プラグイン『Redirection』のログでDBがパンクしてブログのエントリーが新規投稿出来なくなった件
昨日ブログのエントリーをアップした時にちょっとしたトラブルに見舞われた。
私はエントリーの下書きは、PC上のブログエディター「Windows Live Witer」を使って編集して、自分のブログサイトにアップするようにしている。
今回起きたトラブルはそのアップした時の事。
半年前から、特に写真を多く貼り付けているエントリーをアップするときに頻繁にタイムアウトに見舞われていたのであるが、調べても有効な原因もわからず、何度かトライしていると最終的にはアップロードが完了するので、フラストレーションが溜まるものの、まぁいいかと放置していた。(ここ2、3ヶ月ロクに更新もしていなかったのもある)
ところが昨日アップした時に、タイムアウトとは異なる、データベースへの追加が出来ない旨のエラーが発生。(スクショを取り忘れたので正確なメッセージ内容は忘れた)
何らかの理由でデータベース(MySQL)にエントリーを追加できなくなってしまっているようだ。
そこで、直接サイトにログインして、WordPress上から新規投稿画面を開いてみると。。。
やはり、このような表示になってWordPress上からも新規投稿ができなくなっている。
いよいよおかしいと思い、今度は契約しているレンタルサーバーの管理画面へログインして、ステータスを確認してみる。
使用状況の画面を開いて、データベース(DB)の使用状況の欄を見てみると。。。
なんだこれ?DBのサイズ上限(500MB)をオーバーしてるではないか!
しかし500MBもの上限を割り当てているので、普通に使ってる分にはパンクするサイズではない。
きっと何かが悪さしていると思われるので、DBのテーブル内で容量を食っているテーブルを洗い出してみることに。
DBの最適化をするために追加しておいたアドイン「WPーDBManager」からDB内の各テーブルの使用状況を確認してみる。
すると、wp_redirection_404というテーブル名のデータサイズがなんと375MBも取っている!
どうも名前から察するに導入済の301リダイレクト管理用プラグイン「Redirection」が何らかの形で絡んでいるよう。
調べてみるとどうやら404エラーが発生した時に、このwp_redirection_404というテーブルにログを吐いているようだ。
そもそもこのサイトを構築したときに何となくRedirectionを導入したが、今一つよくわからないまま放置していて存在自体を忘れていた。
このテーブル内のデータを直接WPーDBManagerから削除している人もいるようだが、最新版のRedirectionにはプラグインの画面から直接ログを削除できるようになっている。
この機能でログの削除を行った後、レンタルサーバーの管理画面で使用状況を確認すると一気に70MB程度にまで減った。(それでもまだ多いような。。。)
もちろん、先程エラーとなったエントリーも問題なアップすることができた。
そして、もう一つ改善したことが。
冒頭の半年間続いた、タイムアウトのエラーが画像込のエントリーをアップした時でも発生しなくなった。
恐らくテーブルサイズが大きくなり過ぎてメモリを圧迫したり余計なI/Oが発生してパフォーマンスが極端に落ちていたのだろうかと。詳しいことはわからないが。
それと一番気になるのは、404エラーのログが何故ここまで溜まるのか?それともこんなものなのか?
あいにくログを勢いですべて削除してしまったので確認のしようがなくなってしまったが、頻繁に404エラーが発生しているようだとサイト内に何か問題があるのかもしれない。
Redirectionもプラグインの追加をしたまま、これといった設定をした記憶がないので使い方を間違えているところがあるのかもしれない。その辺も含めて見直した方が良さそうだ。