WordPress : 子サイトの投稿画面を開くとサーバのCPUがオーバーロード→ 解決。

WordPress 3.5 をローカルのUbuntuにインストールしてマルチサイト化。いわゆるテスト環境を構築してみたわけです。

で、リダイレクトの不具合が出たのだけれど、それは解決

しばらく平和に使っていたら、以下のような症状に…。
  • 新しく子サイトを追加。
  • その子サイトの投稿画面を開く。
  • 「下書きを追加」ボタンや「更新」ボタンがずっとチラチラしている。
  • Firefox の "Webコンソール" で確認してみると、 wp-admin/admin-ajax.php を際限なくロードしようとしている。
  • 当然のようにApacheのプロセスが山ほど生成されて、CPU使用率が95%オーバーというエラい事態に。こりゃダメだ。
この症状、謎なのは、新しく作成した子サイトでのみ起こって、メインサイトや既存の子サイトでは一切起きない、ということ。

う〜ん。

海外のフォーラムなどを覗いてみると、ワードプレスのバージョンを問わず、同様の症状が何件か見つかって、解決策は、だいたい「プラグインが悪さをしてるんじゃね?外してみたら?」という具合。

ということで、いちどプラグインをすべて無効にして試してみたら、あっさりと症状は無くなったのです。

さて、それでは犯人探し。プラグインをひとつずつ有効にしていって、この症状を誘発する奴を炙り出してやりましょう。

ウチの場合、見つかった意外な犯人は、Revisioner。記事のリビジョン数や自動保存のタイミングを設定するプラグインです。こいつをネットワークで有効化していたので、
  • 新しく子サイトを追加。
  • Rivisionerがロードされる。
  • 初期値として、
    Revisions (保存するリビジョン数) = 0
    Auto Save (自動保存する間隔) = 0
    という値が設定されてしまう場合がある。
  • どうも、その場合に(たぶんWordPressが "自動保存された記事があります" とかのアラートを表示しようとしたときに)変な動作をして admin-ajax.php へのバカみたいなアクセスが生じてしまう。
…という現象のようですな。

なので、Revisioner を無効にしてしまうか、子サイトで投稿画面を開く前に Revisioner を適切に設定してやるかすれば直ります。

マルチサイトだったならば、「ネットワーク管理者」権限ですべての子サイトのリビジョン数・自動保存間隔を制御できる Limit Post Revisions Network Option という便利なプラグインもあるので、そちらを使うと幸せかも。

いやいやしかし、テスト環境で良かった。本番サーバをダウンさせるところでしたわ。

カテゴリ: