WordPress wp-cron.php overbelast: 503-fouten door achtergrondtaken
WordPress gebruikt standaard een intern cron-systeem (wp-cron.php) om achtergrondtaken uit te voeren, zoals het publiceren van geplande berichten en het bijwerken van plugins. Dit systeem wordt bij elk paginabezoek geactiveerd. Op drukke websites kan dit leiden tot overbelasting en 503-foutmeldingen.
Hoe herken je dit probleem?
In je Apache of LiteSpeed access log zie je regels zoals deze, soms tientallen per minuut:
POST /wp-cron.php?doing_wp_cron=1772837882.20 HTTP/1.1" 200 442 "WordPress/6.9" POST /wp-cron.php?doing_wp_cron=1772837885.74 HTTP/1.1" 200 442 "WordPress/6.9" POST /wp-cron.php?doing_wp_cron=1772837890.18 HTTP/1.1" 200 442 "WordPress/6.9"
Let op de User-Agent WordPress/6.9. Dit is WordPress zelf dat wp-cron aanroept, niet een externe bezoeker.
Oorzaak
WordPress' ingebouwde cron is geen echte cron. Het werkt zo:
- Paginabezoek.
Een bezoeker (of bot) opent een pagina - Controle.
WordPress controleert of er achtergrondtaken klaarstaan - HTTP-verzoek.
Zo ja, dan start WordPress een apart verzoek naarwp-cron.php - Overbelasting.
Bij veel gelijktijdige bezoekers ontstaan tientallen parallelle cron-verzoeken
Plugins zoals WooCommerce, backup-plugins en SEO-tools registreren vaak zware cron-taken. In combinatie met het hoge aantal aanroepen leidt dit tot CPU- en geheugenoverbelasting.
Oplossing
Stap 1: Schakel de ingebouwde WP-Cron uit
Open wp-config.php via FTP of de Bestandsbeheerder in DirectAdmin en voeg deze regel toe boven "That's all, stop editing!":
define('DISABLE_WP_CRON', true);
Stap 2: Stel een echte cronjob in via DirectAdmin
- Open DirectAdmin.
Log in op Mijn KeurigOnline en open DirectAdmin via Pakketten - Ga naar Cron Jobs.
Je vindt dit onder Advanced Features - Maak een nieuwe cronjob aan.
Stel het interval in op elke 15 minuten - Vul het commando in.
Gebruik:wget -q -O /dev/null https://jouwdomein.nl/wp-cron.php?doing_wp_cron
Vervangjouwdomein.nldoor je eigen domeinnaam.
Resultaat
- Geen onnodige wp-cron.php aanroepen meer bij elk paginabezoek
- Lagere CPU- en geheugenbelasting
- Geen 503-foutmeldingen meer door overbelasting
- Achtergrondtaken worden betrouwbaar elke 15 minuten uitgevoerd
Liever dat wij dit regelen?
Met een WordPress onderhoudscontract (vanaf 20 euro/mnd) nemen we dit soort configuratie en optimalisatie volledig uit handen.