Toon posts:

cronjob blijft hangen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik maak gebruik van cronjobs, maar nu krijg ik van WideXS (waar de site wordt gehost) de melding dat deze blijven hangen en dat ze teveel belasting voor de server vormen. Hoe kan dat? wat is er mis met mijn crontab:

TERM=xterm
05 0 * * * lynx -dump http://www.domein.nl/script.php >/dev/null

Verwijderd

Topicstarter
ik gebruik TERM=vt100 trouwens ipv datgene wat hierboven staat bij term

  • hennink
  • Registratie: Augustus 2000
  • Laatst online: 06:59
Wellicht kan je het script er even bijzetten, maakt het wat makkelijker

alles wat aan kan, gaat kapot. De vraag is alleen wanneer.


Verwijderd

Topicstarter
Op donderdag 14 maart 2002 16:28 schreef hennink het volgende:
Wellicht kan je het script er even bijzetten, maakt het wat makkelijker
Kan het iets met het script te maken hebben? Nu voer ik het gewoon via mijn browser uit met een refresh in de html-code, dan krijg ik geen klachten.
Dus ik zou dan denken dat het aan de cronjob ligt.

En het is een redelijk groot script.. :)

  • hennink
  • Registratie: Augustus 2000
  • Laatst online: 06:59
Als er ergens iets fout gaat in de cronjob dan moet je netjes een mailtje krijgen van cron met daarin de foutmelding.

alles wat aan kan, gaat kapot. De vraag is alleen wanneer.


Verwijderd

Topicstarter
De scripts worden gewoon prima uitgevoerd, ik vind het ook prima gaan, maar WideXS klaagt dat het teveel serverload vergt.

  • hennink
  • Registratie: Augustus 2000
  • Laatst online: 06:59
Wat doet ie dan ?

alles wat aan kan, gaat kapot. De vraag is alleen wanneer.


Verwijderd

Topicstarter
Ik heb scripts die van andere sites de laatste nieuwstitels ophalen en die in de MySQL-database zet.

Verwijderd

Topicstarter
Extra info: er waren teveel background processen van mij actief op de server en de systeembeheerder moest vaak veel dingen op de server 'killen'

  • hennink
  • Registratie: Augustus 2000
  • Laatst online: 06:59
Twee dingen die wellicht dan kunnen worden verbetert.
Ten eerste zou je kunnen kijken of je de verbinding met je MySQL server wel expleciet afsluit. Ten tweede probeer je wellicht een aantal script te forken in het begin zodat je meerdere processen hebt die alles snel kunnen downen. Wellicht dat je er gewoon een proces van kan maken en dat je een prioriteit mee gaat geven met het opstarten van je script. Wellicht ben je bekent met nice, dus als je een commando hebt in je script roep deze dan aan met nice -20 command. Hiermee zorg je dat je pas resources vraagt als er echt niks anders te doen is. Maak je wel vrienden mee en is netjes om je aan te leren, je zit ten slotte op een live server te werken die je niet wilt belasten met minder direct nuttig zaken.

alles wat aan kan, gaat kapot. De vraag is alleen wanneer.


Verwijderd

Topicstarter
De MySQL-connectie wordt aan het eind echt verbroken.

Maar dat van de 'nice' ken ik niet, maar lijkt me wel handig. Hoe werkt dat precies. Moet ik dat op de crontab-regel toevoegen?

  • hennink
  • Registratie: Augustus 2000
  • Laatst online: 06:59
Je moet gewoon tijdens de aanroep ervoor nice -20 zetten.
Dus als je in een script hebt staan fetchNieuws dan wordt jde aanroep in je script nu nice -20 fetchNieuws, eventueel moet je de volledige aanroep van nice erbij zetten, dus even kijken met which nice waar ie staat, meestal is dit /bin/nice
Suc6, ga er van tussen.

alles wat aan kan, gaat kapot. De vraag is alleen wanneer.


Verwijderd

Topicstarter
In ieder geval bedankt voor alle tips, maar ik denk dat ik er nog niet helemaal uit ben. Met dat nice wordt enkel de prioriteit aangeven, maar wordt niet tegengegaan dat het het blijft 'hangen'.

Heeft er iemand anders nog ideeen?

Verwijderd

Topicstarter
Kan het misschien ook een probleem zijn dat het iets van 30 cronjobs zijn? Ze worden niet tegelijk uitgevoerd, maar elke 2 minuten het volgende script (elk script 1x per uur uitgevoerd).

Is misschien de hoeveelheid scripts wat tot zo'n grote serverload kan leiden?

Verwijderd

1. zorgen dat je script niet op timeouts blijft hangen.
2. zorgen dat je script maar 1 keer tegelijk draait. De truuk die ik hiervoor gebruik is ergens bovenin je script een dummyfile aanmaken en met flock locken. Als dit lukt.. ok.. als dit niet lukt je script exit'en want dan loopt er nog een andere instance van je script. Mocht je script om een andere reden stoppen dan wordt de lock automatisch losgelaten.

Verwijderd

Topicstarter
1. zorgen dat je script niet op timeouts blijft hangen.
Volgens mij zal dat niet gebeuren, maar is er een functie die dat garandeert?
2. zorgen dat je script maar 1 keer tegelijk draait. De truuk die ik hiervoor gebruik is ergens bovenin je script een dummyfile aanmaken en met flock locken. Als dit lukt.. ok.. als dit niet lukt je script exit'en want dan loopt er nog een andere instance van je script. Mocht je script om een andere reden stoppen dan wordt de lock automatisch losgelaten.
Dit snap ik niet precies, kan je dat wat meer uitleggen? Wat is bijv. 'flock locken'?

Verwijderd

Topicstarter
Als ik de scripts gewoon via de browser uitvoer krijg ik verder geen errors en ook geen timeout. Valt dan punt1 al af?

Verwijderd

als WideXS zegt dat je jobs blijven hangen lijkt het me wel. Als vervolgens de volgende weer blijft hangen, en de volgende weer... dan zit er toch iets niet lekker en dan kan ik me voorstellen dat WideXS gaat klagen.
Ik weet natuurlijk niet of het een fsockopen timeout is. Misschien schiet hij wel in een loop waar ie niet meer uitkomt ofzo.

  • hennink
  • Registratie: Augustus 2000
  • Laatst online: 06:59
Geef anders even een link mee naar je script als txt, kunnen we hem downloaden en bekijken. Daarna is een goed antwoord mogelijk

alles wat aan kan, gaat kapot. De vraag is alleen wanneer.


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Kan het zijn dat je scripts allemaal inserts proberen te doen in de DB en dat je daardoor een DB-lock hebt en je in een deadlock terecht bent gekomen. De serverload zou niet hoog moeten worden hierdoor

Verwijderd

Topicstarter
Op vrijdag 15 maart 2002 09:25 schreef Goodielover het volgende:
Kan het zijn dat je scripts allemaal inserts proberen te doen in de DB en dat je daardoor een DB-lock hebt en je in een deadlock terecht bent gekomen. De serverload zou niet hoog moeten worden hierdoor
Het klopt dat er allemaal inserts in de DB worden gedaan, maar dat hoeft toch geen probleem te zijn lijkt me.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Als het in dezelfde tabel is kan hij door een ander script worden gelocked. Dan moeten we allemaal op elkaar wachten, zker als je in al die scripts niet dezelfde volgorde aanhoudt of conditioneel records in andere tabellen insert, zonder commits te geven, kan je in deadlock situaties terecht komen

Verwijderd

Topicstarter
Op vrijdag 15 maart 2002 10:41 schreef Goodielover het volgende:
Als het in dezelfde tabel is kan hij door een ander script worden gelocked. Dan moeten we allemaal op elkaar wachten, zker als je in al die scripts niet dezelfde volgorde aanhoudt of conditioneel records in andere tabellen insert, zonder commits te geven, kan je in deadlock situaties terecht komen
Kan je dit probleem oplossen door gebruik te maken van flock, zoals eerder in deze thread genoemd? Daar werd geadviseerd om een dummyfile te gebruiken aan het begin van het script. Maar werkt dat flock ook met meerdere scripts? Of moet dan alles in 1 script staan?

Verwijderd

Topicstarter
Op vrijdag 15 maart 2002 08:49 schreef hennink het volgende:
Geef anders even een link mee naar je script als txt, kunnen we hem downloaden en bekijken. Daarna is een goed antwoord mogelijk
Het script is hier te vinden: http://www.baerends.nl/telegraaf.php.txt
Ik hoop dat iemand me verder kan helpen.

  • hennink
  • Registratie: Augustus 2000
  • Laatst online: 06:59
Page not found..

alles wat aan kan, gaat kapot. De vraag is alleen wanneer.

Pagina: 1