WordPressのプラグインの更新作業は面倒な作業の1つでした。
WordPressにはプラグインの自動更新機能があるので、すべてのプラグインを一括で自動更新にしておけば話が簡単になるので、ある時期からすべてのサイトで全てのプラグインを自動更新にしていました。
そうすると、自動更新の通知のメールが来るのが鬱陶しいので、以前自動更新の通知メールを止める記事を書きました。
最近、サーバーの負荷があるタイミングで急に高くなる現象があることに気が付きました。
結論から言えば、プラグインの自動更新が原因です。
プラグインの自動更新はとても重い処理
WordPressはwp-cronを定期的に走らせて更新の有無をチェックします。そして、更新があれば更新するのですが、1サイトで使用しているプラグインの数が多い場合、それがサーバーへの負荷となります。
最近のサーバーは複数サイトを運用できるので多くのサイトが1つのサーバーに収容されることも多いです。
そうなると、Wordpressサイトの数 x プラグイン数の自動更新が毎日定期的に走るわけで、タイミングが重なるとサーバー負荷の急激な上昇になってしまいます。
プラグインを入れすぎるな、という話はよく聞きますが、すべてのプラグインを自動更新にしてしまうとプラグイン入れすぎ問題がモロに出てきます。
wp-cronを止めれば解決するけど問題も多い
wp-cronが何をしているのかを確認できるプラグインがあるので、どの程度wp-cronが動いているのか確認してみるのもいいでしょう。

wp-cronのjobはサイトへのアクセスがあった時にwp-cron.phpを呼び出した時に実行されます。
毎回呼び出されるので、wp-cronはサーバー負荷が上昇する原因の1つですので、wp-cronを止めるという高速化手法もあります。
wp-cronを止めるには、wp-config.phpに以下の記述を加えるだけで止まります。
define('DISABLE_WP_CRON', true);
しかし、wp-cronを止めてしまうと更新通知が来ないだけでなく、コアの自動アップデートも止まってしまう問題があります。
OSのcronを使って、wp-cron.phpを定期的にたたくと良いですよね!という記事をよく見かけますが、wp-cronを定期的に呼び出してしまうと、負荷が集中してしまう問題が再発しますので、プラグイン更新などの処理を軽くする必要があります。
cPanelならwp-cronを止めるのは簡単
mixhostやカラフルボックスなどcPanelをコントロールパネルにしているホスティングサービスの場合は、wp-cronを止めるのはとても簡単です。
SoftaculousのWordpress managerから1クリックで設定できます。
- wp-config.phpにwp-cronを止める記述を追加
- OSのcronにスケジュールを追加

自動的に、cronに1時間に2回、wp-cron.phpにアクセスするスケジュールが追加されます。
まとめ
管理者の立場からすれば、一度動いた環境から変更するときにはサイトが動かなくなるリスクがあるので、プラグインは自動更新にはしたくないのです。
しかし、有名なプラグインはセキュリティの問題が起きることが多いので、有名なプラグインだけでも自動更新にして他のプラグインは自動更新は停止する方が安全です。
私はcPanelにwp-cronを止める機能があったのは知りませんでした。cPanelユーザーは是非設定しましょう。