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 が軽快に動作するようになります。
高速化を意識するなら必須の設定です。


