Het voorkomen van simultaan draaiende cronjobs met Flock

Het voorkomen van simultaan draaiende cronjobs met Flock

Cronjobs zijn taken die periodiek worden uitgevoerd en ingesteld kunnen worden via het commando crontab. Het is een eenvoudige manier om taken automatisch uit te voeren. De basis uitleg over cronjobs kun je terugvinden in een eerdere blog post op onze website.

Een cronjob kan echter ook een groot probleem voor de server opleveren wanneer eenzelfde taak meerdere keren en op hetzelfde moment actief is. Een veel voorkomend probleem is, dat een nieuwe taak wordt gestart terwijl de oude nog niet volledig afgerond is.

Als jw bijvoorbeeld een cronjob heeft ingesteld die elke 5 minuten een taak uitvoert en die taak eigenlijk 7 minuten nodig heeft om te voltooien, dan zal op minuut 5 dezelfde taak nog een keer gestart worden. Dit heeft als gevolg dat er op dat moment twee dezelfde taken lopen. Het kan zelfs zodanig uit de hand lopen dat bij verkeerde instellingen een taak meer dan 10 – of meer – keer gelijktijdig kan draaien. je kunt je voorstellen dat dit niet wenselijk is. Zo kan het mogelijk de volgende gevolgen hebben:

  1. Datacorruptie; omdat dezelfde taak meerdere keren wordt uitgevoerd kan dat tot vreemde veranderingen leiden in uw (database-)gegevens.
  2.  Een trage website; omdat alle resources (systeembronnen) van uw server worden aangeroepen. Immers, elke draaiende cronjob heeft deze nodig en zal ze reserveren.
Uiteraard kan het zijn dat, het script wat wordt uitgevoerd, zelf al een mechanisme gebruikt om simultaan draaiende processen te voorkomen. In dat geval hoeft u Flock niet te gebruiken. Voor scripts die geen dergelijk mechanisme hebben, is er de volgende oplossen:
Flock.

Onze High Perfomance Web servers zijn standaard uitgerust met de “flock” tool. Deze tool zorgt er voor dat dezelfde cronjob niet meerdere keren gestart kan worden. Dit doet flock door een tijdelijk “lock-” bestand aan te maken. Zo lang dit bestand aanwezig is zal er geen nieuwe taak gestart worden. Wanneer het commando (de cronjob) is uitgevoerd, zal flock het tijdelijke bestand verwijderen waardoor er weer een nieuwe taak gestart kan worden. Het gebruik is eenvoudig. Onderstaand een voorbeeld waarbij de standaard Magento cronjob wordt uitgevoerd met behulp van flock:
  1. */5 * * * * flock -xn "${TMP}cron.php.lock" php -q /var/hpwsites/<user>/website/html/webroot/cron.php >/dev/null 2>&1
Met de “-xn” parameter geeft u aan welk lock bestand er aangemaakt dient te worden. Deze moet verschillen per actieve cronjob. In bovenstaand voorbeeld gebruiken we een systeem variabele ($TMP) in combinatie met de omschrijving “cron.php.lock” wat resulteert in het aanmaken van het volgende lock-bestand “/var/hpwsites/tmp/cron.php.lock”.

Mocht u meer over flock willen weten dan kunt u, wanneer u bent ingelogd op uw HPW server, het volgende commando gebruiken om de handleiding te openen.
   
man flock

    • Related Articles

    • Cronjob instellen

      Wil je processen op ‘gezette tijden’ starten? Dan gebruik je Cronjob als programma. Het instellen van cronjobs kun je zelf doen op onze HPW server. In dit artikel geven we graag informatie over hoe je dit precies doet, zodat je zelf gemakkelijk jouw ...
    • Misbruik van uitgaande e-mail voorkomen

      Het kan voorkomen dat een server op een zogenaamde zwarte lijst komt te staan, vaak doordat een klant onbedoeld spam verstuurt. Dit veroorzaakt problemen voor jou en andere klanten, omdat legitieme e-mails mogelijk worden geweigerd door diensten ...
    • Bestandsoverdracht met rsync

      Heb je meerdere servers? Dan kan het voorkomen dat je bestanden wilt kopiëren van de ene server naar de andere server. Om dit goed te doen nemen wij de tool rsync in gebruik. Wij leggen je graag uit hoe je dit kunt gebruiken om bestanden te kopiëren. ...
    • Oplossing voor 502 Bad Gateway bij het laden van je website

      Bezoek je je website en zie je dat deze maar blijft laden? Na lang wachten verschijnt de vervelende melding: 502 Bad Gateway. Wat betekent dit precies, en wat kun je doen om dit te voorkomen? Wat veroorzaakt een 502 Bad Gateway? Wanneer je website ...
    • E-mail migreren met ImapSync

      Bij het verhuizen van jouw website naar LinQhost is het overzetten van de websitebestanden en databases geen probleem. Wanneer het gaat om jouw e-mail wordt dit al wat lastiger. Hier volgt een stappenplan om ook jouw e-mail via imap te migreren naar ...