Heartbeat API WordPress Bikin CPU Tinggi, Cara Mengaturnya
Kenapa Heartbeat API membuat admin-ajax.php sibuk dan CPU hosting naik, cara memastikannya, dan cara memperlambatnya tanpa merusak autosave.
Jawaban singkat
Heartbeat API mengirim permintaan berkala ke admin-ajax.php selama dashboard terbuka. Bila banyak tab admin dibiarkan terbuka, CPU hosting bisa naik. Solusinya memperlambat interval lewat filter heartbeat_settings dan mematikannya di halaman depan saja, bukan di editor.
Daftar isi
- Apa itu Heartbeat API?
- Seberapa sering Heartbeat berdenyut?
- Kenapa di shared hosting lebih cepat terasa?
- Langkah mengatur Heartbeat agar tidak membebani CPU
- 1. Pastikan Heartbeat memang penyebabnya
- 2. Tutup tab admin yang tidak dipakai
- 3. Perlambat interval lewat filter
- 4. Matikan Heartbeat di halaman depan saja
- 5. Jangan matikan di editor
- 6. Ukur lagi setelah perubahan
- Pertanyaan yang sering diajukan
Grafik CPU hosting naik terus padahal pengunjung sedang sepi? Atau log server dipenuhi permintaan ke admin-ajax.php? Salah satu tersangka yang sering muncul adalah Heartbeat API, fitur WordPress yang diam-diam "berdenyut" selama dashboard terbuka.
Jawabannya: Heartbeat tidak perlu dimatikan total. Yang perlu dilakukan adalah memastikan dulu bahwa Heartbeat memang penyebabnya, lalu memperlambat iramanya dan mematikannya hanya di tempat yang tidak membutuhkan.
Apa itu Heartbeat API?
Heartbeat adalah skrip JavaScript bawaan WordPress yang mengirim permintaan ke server secara berkala lewat admin-ajax.php. Dari situ WordPress bisa melakukan beberapa hal tanpa memuat ulang halaman:
- Mengunci tulisan yang sedang diedit, supaya dua orang tidak menimpa pekerjaan satu sama lain.
- Mengingatkan bila sesi login habis.
- Menyimpan otomatis di editor klasik.
- Memberi data waktu nyata untuk plugin, misalnya notifikasi atau statistik di dashboard.
Masalahnya, setiap denyut adalah satu permintaan PHP yang memuat WordPress. Satu tab tidak terasa. Tapi beberapa admin yang masing-masing membiarkan beberapa tab dashboard terbuka seharian bisa membuat server terus sibuk, apalagi di shared hosting dengan batas CPU.
Seberapa sering Heartbeat berdenyut?
Di kode heartbeat.js WordPress versi terbaru, interval bawaannya 60 detik. Editor blok mengubahnya menjadi 10 detik supaya kunci tulisan selalu segar. Saat tab tidak sedang dilihat atau kamu lama tidak menyentuh mouse dan keyboard, interval melambat ke 120 detik. Di luar layar editor, Heartbeat juga bisa berhenti sendiri setelah lama tidak ada aktivitas.
| Kondisi | Perilaku Heartbeat |
|---|---|
| Dashboard admin biasa | Sekitar 60 detik sekali |
| Editor blok terbuka | Sekitar 10 detik sekali |
| Tab tidak aktif atau pengguna diam | Melambat ke 120 detik |
| Halaman depan website | Hanya bila tema atau plugin memuatnya |
Artinya, editor yang dibiarkan terbuka adalah sumber denyut paling rajin.
Kenapa di shared hosting lebih cepat terasa?
Setiap denyut Heartbeat menjalankan PHP dan memuat WordPress beserta plugin yang aktif. Semakin banyak plugin, semakin berat satu denyut. Di shared hosting, akunmu biasanya dibatasi jumlah proses yang boleh berjalan bersamaan dan jatah CPU. Bila denyut dari beberapa tab admin bertabrakan dengan pengunjung yang sedang membuka halaman, proses bisa mengantre dan website terasa lambat, atau bahkan muncul error karena batas proses tercapai.
Hitungannya sederhana. Satu editor blok yang terbuka mengirim sekitar enam permintaan per menit. Tiga penulis yang masing-masing membuka dua tab editor sepanjang jam kerja sudah menghasilkan puluhan permintaan per menit, padahal tidak ada pengunjung sama sekali. Di VPS, beban ini lebih mudah ditanggung, tapi tetap membuang sumber daya yang bisa dipakai untuk melayani pembeli.
Langkah mengatur Heartbeat agar tidak membebani CPU
1. Pastikan Heartbeat memang penyebabnya
Buka dashboard, tekan F12, lalu pilih tab Network. Saring dengan kata admin-ajax. Klik salah satu permintaan dan lihat bagian payload. Kalau isinya action=heartbeat dan muncul berulang, berarti itu denyut Heartbeat.
Kalau punya akses log akses server, hitung permintaan admin-ajax.php per jam. Permintaan yang tetap banyak di jam kosong, misalnya tengah malam, sering berasal dari tab admin yang lupa ditutup. Cara membaca angka penggunaan CPU di panel hosting ada di arti CPU, EP, dan IO di resource limit hosting.
2. Tutup tab admin yang tidak dipakai
Kedengarannya sepele, tapi ini perbaikan tercepat. Biasakan tim menutup editor setelah selesai menulis, dan jangan membiarkan dashboard terbuka di beberapa komputer sekaligus.
3. Perlambat interval lewat filter
Tambahkan kode berikut ke plugin snippet atau plugin kecil buatan sendiri (bukan ke functions.php tema, supaya tidak hilang saat ganti tema):
add_filter( 'heartbeat_settings', function ( $settings ) {
$settings['minimalInterval'] = 60;
return $settings;
} );
Kenapa minimalInterval, bukan interval? Karena editor blok memaksa interval 10 detik setelah halaman dimuat, sehingga pengaturan interval biasa ikut tertimpa di editor. Menurut komentar di kode heartbeat.js, minimalInterval mengalahkan semua interval lain dan hanya bisa diatur saat awal dimuat.
Jangan terlalu panjang. Kode yang sama mencatat bahwa kunci tulisan kedaluwarsa setelah 150 detik, jadi interval di atas itu bisa membuat dua orang membuka tulisan yang sama tanpa peringatan. Angka 60 sampai 120 detik umumnya masih aman.
4. Matikan Heartbeat di halaman depan saja
Pengunjung biasa jarang membutuhkan Heartbeat. Kalau ternyata tema atau plugin memuatnya di halaman depan, kamu bisa menonaktifkannya khusus di sana:
add_action( 'wp_enqueue_scripts', function () {
wp_deregister_script( 'heartbeat' );
}, 100 );
Hook wp_enqueue_scripts hanya berjalan di halaman depan, sehingga dashboard dan editor tidak terpengaruh. Setelah memasang kode ini, cek fitur yang mungkin bergantung padanya, misalnya notifikasi langsung atau chat dari plugin. Skrip yang menjadikan Heartbeat sebagai dependensi tidak akan dimuat.
5. Jangan matikan di editor
Mematikan Heartbeat total di area admin memang membuat permintaan hilang, tapi kunci tulisan tidak berfungsi dan peringatan sesi habis tidak muncul. Di editor klasik, simpan otomatis juga bergantung padanya. Untuk website dengan lebih dari satu penulis, risikonya lebih besar daripada hematnya.
6. Ukur lagi setelah perubahan
Pantau grafik CPU dan jumlah permintaan admin-ajax.php selama beberapa hari. Kalau CPU tetap tinggi, Heartbeat mungkin bukan pelaku utama. Periksa juga wp-cron, yang dibahas di apa itu wp-cron dan kenapa bisa bikin hosting berat, serta penyebab umum lain di kenapa WordPress lambat.
Pertanyaan yang sering diajukan
Apakah aman mematikan Heartbeat sepenuhnya?
Di halaman depan umumnya aman. Di area admin tidak disarankan, karena kunci tulisan, peringatan sesi, dan simpan otomatis di editor klasik ikut berhenti.
Apakah ada plugin untuk mengatur Heartbeat?
Ada. Beberapa plugin optimasi dan plugin cache menyediakan pengaturan Heartbeat. Pilih salah satu saja, supaya tidak ada dua pengaturan yang saling bertabrakan.
Kenapa admin-ajax.php tetap ramai setelah Heartbeat diperlambat?
Banyak plugin dan tema memakai admin-ajax.php untuk keperluan lain, misalnya formulir, filter produk, atau keranjang. Lihat parameter action di setiap permintaan untuk tahu siapa pengirimnya.
Apakah pengunjung yang tidak login memicu Heartbeat?
Hanya bila tema atau plugin memuat skrip Heartbeat di halaman depan. Secara bawaan, Heartbeat dipakai di area admin.
Checklist singkat:
- Pastikan permintaan
action=heartbeatmemang dominan. - Tutup tab dashboard dan editor yang tidak dipakai.
- Pasang
minimalInterval60 sampai 120 detik. - Matikan Heartbeat di halaman depan bila tidak dibutuhkan.
- Pantau CPU beberapa hari setelahnya.


