ポイ探ニュースでも利用しているWordPressですが、投稿時に異常な負荷がかかり、投稿完了までにかなりの時間がかかっていました。
ロードアベレージを見ても10~30程度。サイトへのアクセスもできないくらいの値です。
そこで、プラグインのQuery Monitorをインストールして、どの処理で速度低下、高負荷になっているのかを探してみました。
まず、「新規投稿」ボタンをクリックすると、10秒近くかかります。高負荷になっていたのは、次のSQL文。
SELECT meta_key FROM wp_postmeta GROUP BY meta_key HAVING meta_key NOT LIKE ‘\_%’ ORDER BY meta_key LIMIT 30;
mysqlで実際に動かしてみると10.62秒かかります。
色々と検索した所、meta_keyのvarchar(255)が問題のようです。varchar(191)に変更します。
ALTER TABLE wp_postmeta MODIFY meta_key varchar(191);
再度SQLを実行すると、0.43秒と大幅にスピードアップしました。「新規投稿」ボタンをクリックしても、そこそこのスピードで表示されます。
この状態で新規に投稿した所、やはり高負荷は解消されません。Query Monitorを見ると、プラグインのSQLが遅いことがわかります。投稿と同時にtwitterにも投稿してくれるプラグイン「WordTwit Twitter Plugin」が重い原因のようです。こちらを停止。
ロードアベレージも1~2程度に落ち着きましたので、これでしばらく様子を見たいと思います。