Onafhankelijke vergelijking · geen betaalde rankings
Home / Blog / Gids / Cronjobs: onzichtbare processen eindelijk waarneembaar maken

Cronjobs: onzichtbare processen eindelijk waarneembaar maken

Crons falen wekenlang in stilte, totdat een onbetaalde factuur of niet-gesynchroniseerde inventaris het gebrek aan monitoring aan het licht brengt.

Redactie Hébergeurs.eu 4 min

Een e-commercebedrijf ontdekt op een maandag dat er al twaalf dagen geen bestellingen naar het ERP zijn geëxporteerd. Het cron-script wordt uitgevoerd: correcte crontab-invoer, logbestand gedateerd vanochtend. In werkelijkheid mislukt de taak bij de SFTP-verbinding sinds een sleutelwijziging, maar de ontwikkelaar heeft stderr niet omgeleid, niemand controleert de exitcode en de gedeelde geeft geen melding .

Cronjobs zijn door hun ontwerp onzichtbaar. Ze draaien 's nachts, zonder dat er een gebruiker voor het scherm zit. Dit is precies de reden waarom ze meer zichtbaarheid vereisen dan een webpagina – en niet minder.

Anatomie van een productiecron

ElementSlechte praktijkGoede praktijk
Afsluiten/dev/nullGestructureerd log + rotatie
MislukkingGenegeerdWaarschuw bij uitgang ≠ 0
DuurNiet gemetenTime-out + overschrijdingswaarschuwing
ConcurrentieDubbele uitvoeringFlocklock / Redis
IdempotentieNeeHerspeelbaar zonder dubbel effect

Een cron die “draait” zonder bewijs van zakelijk succes is niet uitgevoerd — hij heeft alleen maar CPU verbruikt.

Gedeeld versus VPS: waar verandert jouw nacht?

Gedeeld:

  • Lage tijdnauwkeurigheid; overlap met aangrenzende banen.
  • cron mail() vaak uitgeschakeld of spam gefilterd.
  • Geen geavanceerde systeemtimer.

VPS / cloud:

  • systemd-timers met Persistent=true (gemiste inhaalactie).
  • Gecentraliseerde journaallogboeken.
  • Toegewijde werknemers voor zware klussen.

Voor het synchroniseren van facturering of aandelen is gedeeld een gok. Voor wekelijks opschonen van de cache is acceptabel.

Minimaal waarneembaar patroon

  1. Wikkelomhulsel:

#!/bin/bash

set -euo pipefail

LOG=/var/log/jobs/export-erp.log

{

  echo "=== $(datum -Is) start ==="

  /usr/bin/php /app/bin/export-erp.php

  echo "=== $(datum -Is) ok ==="

} >> "$LOG" 2>&1 || curl -fsS -m 10 --probeer 3 https://hc.example/ping/xxx-fail

  1. Healthchecks.io / Cronitor — ping START en SUCCES; waarschuwen bij afwezigheid.
  2. Duurstatistiek — Grafana of eenvoudig geparseerd logboek; waarschuwing indien > 2× mediaan.
  3. Runbook — link in waarschuwing naar handmatige procedure.

Zie Crontab en vergrendeling en Celery: voorkom dat een takenwachtrij een black box wordt.

Idempotence en sloten

Klassiek scenario: productimport duurt 25 minuten, cron elke 15 minuten → twee importen beschadigen de database.

Oplossingen:

  • flock -n aan het begin van het script — overslaan als het al bezig is.
  • Redis SET NX met TTL > maximale taakduur.
  • PostgreSQL-adviesslot voor DB-gerichte taken.

Elke kritieke taak moet herspeelbaar zijn: herstart zonder het aantal schrijfbewerkingen te verdubbelen (UPSERT, batch_id marker).

Cron-migratie → wachtrij

SignaalActie
Taak > 5 minutenWerknemer + staart
Opnieuw proberen met uitstelSelderij / Messenger
Afhankelijkheden tussen banenOrchestrator (tijdelijk, luchtstroomlicht)
TeamzichtbaarheidDashboard Bloem / Horizon

De cron is nog steeds nuttig voor triggering (0 2 * php bin/console messenger:consume) — niet om alles inline uit te voeren.

De top: cron-falen wordt altijd ontdekt door de beroepsgroep, nooit door technologie

De host verkoopt “inclusief cron”. Uw verantwoordelijkheid: succes of mislukking bewijzen, ongeacht de panelhosting.

Beslis en ga vooruit zonder blinde vlek

  1. Inventariseer alle crons (crontab + paneel + CI).
  2. Classificeer kritiek en voeg externe gezondheidscontrole toe aan beoordelingen.
  3. Vergrendel taken > 1 min of kort interval.
  4. Test mislukt vrijwillig – waarschuwing komt binnen < 5 minuten?
  5. Document-eigenaar en runbook per taak.

Vergelijk PaaS met waarneembare cron (Alwaysdata) via onze overzicht.

Veelgestelde vragen

Waarom zijn gedeelde crons onbetrouwbaar?

Onnauwkeurige vensters, gedeelde belasting, geen melding van fouten: riskant voor kritieke synchronisatie.

Hoe weet ik of een cron is mislukt?

Gelogde exitcode + externe ping of waarschuwing; zwijgen is geen succes.

Is een slot nodig om duplicaten te voorkomen?

Ja als taakduur ≥ interval — koppel, Redis of adviesslot.

Systeemcron of wachtrij?

Cron voor kort en zeldzaam; wachtrij + werknemers voor lang, opnieuw proberen en zichtbaarheid.


Een betrouwbare cron wordt 's nachts niet gezien; hij wordt 's ochtends bewezen of waarschuwt voordat het bedrijf het merkt.

Vergelijk Europese providers

Filter op compliance, locatie en gebruikssituatie — open daarna de fiches om het echte bereik te controleren.

Blader door het overzicht
Blog

Gerelateerde lectuur

Alle artikelen →