Skript efter crontab äter minnet

musse1
Inlägg: 35
Blev medlem: 25 dec 2006, 16:45

Skript efter crontab äter minnet

Inlägg av musse1 »

Jag kör crontab väldigt ofta och det äter minnet. Stängs inte php skriptet av efter att det har körts färdigt eller ligger det i bakgrunden och pyr? Vad ska man göra åt att det äter upp minnet? Det är inte så att skriptet äter minnet precis när det körs, utan problemet ligger i att crontab körs ofta och då körs även skriptet ofta vilket resulterar i att minnet äts upp efter några timmars körande. Skriptet körs varje minut och tar väll ett par sekunder för datorn att tugga igenom. Går det att rensa det fysiska minnet på något sätt efter varje körning eller hur ska man gå till väga för att få bukt på detta? Jag vet att det beror på php-skripten som körs eftersom jag stängde ner den som körs varje minut och nu har det upphört eller åtminstone minskat (några körs på natten fortfarande och drar lite).
Användarvisningsbild
gholen
Hedersmedlem
Inlägg: 1332
Blev medlem: 05 apr 2006, 19:27
OS: Ubuntu
Utgåva: 10.04 Lucid LTS
Ort: Uddevalla
Kontakt:

Skript efter crontab äter minnet

Inlägg av gholen »

Eftersom contrab är mjukvara flyttar jag tråden.
// gholen
Bild
Belsebub
Inlägg: 71
Blev medlem: 05 maj 2006, 05:09
Ort: Luleå
Kontakt:

Skript efter crontab äter minnet

Inlägg av Belsebub »

Fula lösningen skulle vara ett cronjob med kill/killall :P
Bästa lösningen vore att förbättra skriptet. Försöka analysera vad i skriptet som tar tid och få skriptet att avslutas korrekt.
Kommandona "ps" och "top" visar mycket info om aktiva program och är ovärderliga i fall som detta.

De som körs på natten är vanligtvis loggroteringar och kanske något annat systemunderhåll. Om du inte lagt till något eget jobb där så borde dessa inte orsaka några problem (dvs de avslutas korrekt och minnet frigörs).
musse1
Inlägg: 35
Blev medlem: 25 dec 2006, 16:45

Skript efter crontab äter minnet

Inlägg av musse1 »

Problemet är inte att det drar mycket just när skriptet körs. Problemet är att minnet inte frigörs när skriptet är färdigt. Hur ska jag lösa detta så minnet frigörs? Nu bygger den bara på mer och mer och efter ett par dagar är den uppe i 95%+ på det fysiska minnet. Hur löser jag detta?
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Skript efter crontab äter minnet

Inlägg av johanre »

Belsebubs förslag om att kolla via ps och top och även analysera scriptet är fortfarande det bästa alternativet. Troligtvis så avslutas ditt script aldrig helt - annars hade du inte sett det här beteendet.
musse1
Inlägg: 35
Blev medlem: 25 dec 2006, 16:45

Skript efter crontab äter minnet

Inlägg av musse1 »

Nu har jag valt att ta bort skriptet i crontab som körs ofta och det har upphört. Har t.om. använt mig av exit(); i slutet av skriptet för att stänga ner det helt. Fungerar icke:(

PS:

PID TTY TIME CMD
5577 pts/0 00:00:00 su
5578 pts/0 00:00:00 bash
5590 pts/0 00:00:00 ps

TOP:

top - 17:58:34 up 2 days, 48 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 54 total, 2 running, 52 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 515896k total, 345756k used, 170140k free, 119524k buffers
Swap: 610428k total, 0k used, 610428k free, 144248k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 16 0 1632 532 448 S 0.0 0.1 0:01.17 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/0
6 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 khelper
7 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
10 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
11 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
84 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
115 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
116 root 15 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
117 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
118 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
1658 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
1715 root 10 -5 0 0 0 S 0.0 0.0 0:00.18 kjournald
1783 root 15 0 1600 544 468 S 0.0 0.1 0:00.00 logd
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Skript efter crontab äter minnet

Inlägg av johanre »

[quote="musse1"]Nu har jag valt att ta bort skriptet i crontab som körs ofta och det har upphört. Har t.om. använt mig av exit(); i slutet av skriptet för att stänga ner det helt. Fungerar icke:([/quote]
Då vet vi en sak med säkerhet, någonting i scriptet är galet - det når aldrig fram till exit()...

[quote="musse1"]PS:

PID TTY TIME CMD
5577 pts/0 00:00:00 su
5578 pts/0 00:00:00 bash
5590 pts/0 00:00:00 ps[/quote]
Ber om ursäkt. Jag borde ha varit tydligare; du måste skriva ps -ef, just nu ser du bara de processer du har skapat.

[quote="musse1"]TOP:[/quote]
Allt ser bra ut - vilket enkelt förklaras av att du har stängt av scriptet i crontab.

Om du fortfarande vill felsöka :
(1) slå på scriptet i crontab igen
(2) låt gå ett tag tills du märker att minnesutnyttjandet skenar iväg igen
(3) meddela i forumet vad ps -ef och top ger.
Skriv svar

Återgå till "Program - inaktuell"