Heartbeat APIの最適な制限設定|CPU負荷を激減させる方法

WordPress には Heartbeat API(ハートビートAPI)という、管理画面とサーバーが一定間隔で通信するための仕組みがあります。

しかし、デフォルト値のままでは通信回数が多すぎてサーバー負荷が上昇し、サイト速度低下の原因になることがあります。

この記事では、Heartbeat API の役割と、最適な制限値(Throttle値) を利用ケース別に詳しく解説します。

1 Heartbeat API とは?

WordPress が「今何をしているか」を管理するための内部通信APIです。
例えば、次のような処理で使われます。

  • 投稿編集画面の自動保存(リビジョン)
  • ログイン状態の維持
  • 他ユーザーによる編集中のロック
  • プラグインの通知・更新チェック

便利な機能ですが、通信間隔が短いとサーバー負荷が大きくなります。

2 Heartbeat API のデフォルト値(かなり短い)

使用場所 デフォルト間隔
投稿編集画面(post.php) 15秒
管理画面(admin) 60秒
フロント(テーマ側) 60秒

とくに投稿画面の 15 秒 は短すぎて負荷が高い と言われます。

3 適切な制限値(推奨Throttle値)まとめ

以下は、WordPress制作者・ホスティング会社・高速化専門家の共通した意見をまとめた最適な Heartbeat の間隔設定です。

3.1 推奨値(結論)

対象 推奨間隔(秒) 理由
投稿編集画面 30〜60秒 自動保存を残しつつ負荷を半減
管理画面全般 120秒 通知チェック頻度を減らし負荷軽減
フロント(テーマ側) 完全停止(0秒) 通常サイトには不要、負荷削減に最も効果的

**フロント側のHeartbeatはほぼ不要なので「停止」が最適解** です。
(テーマで特殊機能を使っていない限り問題ありません)

4 Heartbeat API の負荷が高いとどうなるか?

  • サーバー負荷上昇 → レスポンス遅延
  • CPU使用率が上がり「503」エラー
  • 共有サーバーで制限されることがある
  • ダッシュボードがもっさり重くなる

特にエックスサーバー&ロリポップでは、
Heartbeat API多用でリソース制限を受けやすいと言われています。

5 最適な制限値を設定する functions.php コード

以下のコードを使えば、
「投稿画面は60秒」「管理画面は120秒」「フロントは停止」
という最適なスロットリングを実現できます。


// Heartbeat API を場所ごとに最適制限
add_filter('heartbeat_settings', function($settings, $location) {

    // 投稿編集画面(15秒 → 60秒)
    if ($location === 'post.php' || $location === 'post-new.php') {
        $settings['interval'] = 60;
    }

    // 管理画面全体(60秒 → 120秒)
    elseif ($location === 'admin') {
        $settings['interval'] = 120;
    }

    // フロント側は完全停止
    else {
        $settings['interval'] = 0;
    }

    return $settings;
}, 10, 2);

このコードは WordPress の仕組み上とても安全で、不具合が起きにくいのが特徴です。

6 Heartbeat を制限しても問題ないのか?(用途別解説)

6.1 投稿編集画面(post.php)

完全停止は推奨しません。
理由:自動保存が働かず、内容が消えるリスクがあるから。

6.2 管理画面(admin)

通知チェック間隔が少し遅くなるだけなので問題ありません。

6.3 フロント側

WordPressの通常サイトでは99%不要なので停止でOK。

7 Heartbeat API の動きを停止したい場合

もっと負荷を減らしたい人向けに、
投稿編集以外を完全停止するコードもあります。


// 投稿編集以外の Heartbeat API を完全停止
add_action('init', function() {
    if (!is_admin()) {
        wp_deregister_script('heartbeat');
    }
});

高速化効果は大きいですが、管理画面の一部機能(通知)が使えなくなる可能性があります。

8 Heartbeat API のチェック方法

ブラウザの開発者ツールで「Network → xhr」を見ると、Heartbeat 通信が定期的に発生しているのが確認できます。

通信URL例:
/wp-admin/admin-ajax.php?action=heartbeat

9 まとめ

Heartbeat API は便利ですが、標準設定は通信が多すぎるため、適切な制限(Throttle)を行うことで高速化効果が非常に大きいです。

特に重要なのはこの3つ:

  • 投稿編集は 30〜60 秒
  • 管理画面は 120 秒
  • フロント側は不要 → 停止が最適

この制限だけでも、CPU負荷とadmin-ajax.phpへのアクセスが大幅に減り、WordPress が軽快に動作するようになります。

高速化を意識するなら必須の設定です。