Saya telah berurusan dengan masalah selama beberapa waktu sekarang yang belum menemukan solusi yang pasti.
Masalahnya adalah, tepat setelah mempublikasikan sebuah postingan, konsumsi CPU meroket serta jumlah proses yang membuat situs praktis tidak dapat diakses untuk jangka waktu yang lama.
Ini adalah masalah serius, karena pelanggan akan menerima pemberitahuan tentang publikasi baru, yang tidak dapat mereka baca karena halaman tidak terselesaikan, belum lagi apa artinya jika posisi halaman sering turun.
Setelah beberapa waktu, sistem pada akhirnya akan mematikan proses, tetapi bisa memakan waktu berjam-jam sampai hal itu terjadi.
Jika Anda menggunakan cPanel, Anda biasanya akan menerima email dengan pesan seperti ini:
(Cron Daemon)
/bin/sh: line 1: 30255 Killed /usr/local/bin/php /home/user/public_html/wp-cron.php >> /home/user/public_html/wp-cron.log 2>&1
Dengan mengaktifkan DISABLE_WP_CRON
di wp-config.php
, namun masih menerima pesan "Killed" dari cPanel, berarti ada proses atau konfigurasi lain (yang belum saya temukan) yang mencoba menjalankan wp-cron.php
, dan sistem menghentikannya karena terlalu banyak menggunakan sumber daya (memori, CPU, dan lain-lain).
Hari ini saya telah menyelidiki lebih jauh dan saya telah memantau konsumsi CPU. Untuk ini, saya menggunakan terminal pada peramban untuk akses SSH dan WP-CLI yang ditawarkan oleh LucusHost di cPanel.
Jika hosting Anda mengizinkannya, untuk mengaksesnya Anda harus masuk ke Advanced/Terminal di cPanel. Jika file blog Anda berada di folder public_html, Anda harus mengaksesnya seperti ini:
cd public_html
Kemudian, untuk melihat proses yang sedang berjalan, ketik
top
Dan Anda harus melihat sesuatu seperti ini:

Dalam kasus saya, saya menemukan longsoran proses lsphp yang benar-benar menghabiskan CPU.
Anda hanya perlu membuka area administrasi WordPress untuk melihat empat atau lima proses LiteSpeed(lsphp) yang ditutup setelah beberapa detik. Ini normal, proses lsphp LiteSpeed adalah bagian dari arsitekturnya untuk menangani koneksi PHP secara efisien.
Namun, ada sesuatu yang tidak beres ketika, setelah menerbitkan postingan baru (terkadang cukup dengan mengedit postingan yang sudah diterbitkan), proses ini dipicu baik dalam jumlah maupun penggunaan CPU dan tidak dilepaskan, membuat situs mati.
Tindakan darurat pertama untuk membuka blokir halaman adalah dengan mematikan proses yang "macet" tersebut, yang tidak menyelesaikan masalah yang menyebabkan penyumbatan, tetapi Anda mendapatkan kembali akses ke situs tersebut.
pkill -u TuNombreDeUsuario lsphp
Jika Anda mau, Anda dapat mematikan proses tertentu menggunakan PID-nya, meskipun ini mungkin tidak akan banyak membantu Anda karena banyak proses yang ditutup dan dibuka dalam interval yang pendek.
# Detiene procesos con alto %CPU (ejemplo para detener el PID 7026)
kill -9 7026
Biasanya, secara default, LiteSpeed menjalankan keempat tugas ini setiap menit tergantung pada konfigurasi plugin Anda dan opsi yang Anda gunakan.
litespeed_task_imgoptm_pull
litespeed_task_ccss
litespeed_task_ucss
litespeed_task_lqip
Dua yang pertama, imgoptm_pull
dan ccss
, adalah tugas berat yang terkadang menyebabkan waktu habis (terutama pada hosting bersama), sementara ucss dan lqip adalah tugas yang lebih ringan.
Jadi hal pertama yang saya coba adalah memblokir regenerasi otomatis LiteSpeed dengan menonaktifkan manajemen Cron otomatis di LiteSpeed, untuk itu saya menambahkan ini di wp-config.php
// Deshabilita la gestión automática de Cron en LiteSpeed
define('LITESPEED_DISABLE_CACHE_PURGE_CRON', true);
define('LITESPEED_DISABLE_AUTOUPDATE_CRON', true);
Kemudian, dengan fungsi berikut yang ditambahkan di functions.php Anda memaksa penghapusan interval 1 menit dan mengubahnya menjadi 1 kali per hari mendistribusikan tugas-tugas ini pada waktu yang berbeda untuk menghindari konsumsi CPU yang berlebihan. Bergantung pada lalu lintas blog Anda, Anda dapat mengatur jam-jam ini pada waktu yang berbeda di pagi hari, misalnya.
/**
* Cambia la frecuencia de las tareas de LiteSpeed Cache de "cada minuto" a "una vez al día" a distintas horas".
*/
add_action('init', function() {
// Eliminar el intervalo "litespeed_filter"
add_filter('cron_schedules', function($schedules) {
if (isset($schedules['litespeed_filter'])) {
unset($schedules['litespeed_filter']);
}
return $schedules;
}, 9999);
// Reprogramar tareas con timestamps únicos
$tasks = array(
'litespeed_task_imgoptm_pull' => strtotime('tomorrow 00:30'),
'litespeed_task_ccss' => strtotime('today 20:00'),
'litespeed_task_ucss' => strtotime('tomorrow 00:00'),
'litespeed_task_lqip' => strtotime('tomorrow 04:00')
);
foreach ($tasks as $hook => $time) {
if (wp_next_scheduled($hook)) {
wp_unschedule_event(wp_next_scheduled($hook), $hook);
}
wp_schedule_event($time, 'daily', $hook);
}
}, 9999);
Setelah perubahan ini diterapkan, periksa apakah perubahan tersebut berfungsi, menurut plugin Advanced Database Cleaner Pro, perubahan ini sedang diterapkan. Anda juga dapat memeriksa dengan Wp Crontrol.

Dengan asumsi Anda tidak menggunakan CRON virtual WordPress asli, untuk lebih meringankan konsumsi CPU, CRON baru ditambahkan yang meningkatkan frekuensi hingga 30 menit, menghindari duplikasi dengan flok, dan mengurangi beban server.
*/30 * * * * /usr/bin/flock -xn /tmp/wp-cron.lock /usr/local/bin/php /home/TuNombreDeUsuario/public_html/wp-cron.php > /dev/null 2>&1
Sekarang, ketika kita menjalankan daftar jadwal wp cron, kita menemukan bahwa filter litespeed_filter , atau filter lainnya, tidak berjalan setiap 60 detik.

Ini hanyalah pendekatan pertama. Sekarang saya harus terus menguji dan memantau penggunaan sumber daya dalam berbagai skenario. Setidaknya, untuk saat ini, saya belum melihat halaman mogok lagi ketika menerbitkan postingan baru.
Jika ada yang memiliki masalah yang sama dan telah menemukan solusi yang pasti, sebuah tip akan sangat dihargai.