Portál AbcLinuxu, 2. června 2025 00:11


Dotaz: Jak zjistit, ktery PHP skript zabiji Apache

22.8.2007 14:41 David | skóre: 21 | Praha
Jak zjistit, ktery PHP skript zabiji Apache
Přečteno: 733×
Odpovědět | Admin
Ahoj, z cronu se na jednom stroji v noci pousti celkem hodne skriptu a dost casto to ten stroj uplne zabije (zaplni se swap a pak to klekne). Nezadam o radu co s tim, pac odpoved je jednoducha, nepoustet tolik skriptu najednou, ale to bohuzel neni v me moci. Zadam o radu jak zjistit, ktere z te hromady skriptu sou procesorove nejnarocnejsi, tedy, ktere nejvic zabiji stroj.
Diky, David
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.8.2007 14:57 Platonix
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
No asi bych zkusil do tech skriptu vlozit nejake logovani. Pokud je to teda mozne. Proste aby minimalne na konci po provedeni skriptu ten skript zapsal do nejakeho souboru, ze byl proveden. Na zacatek skriptu by mozna slo zase vlozit logovani, ze byl spusten. Treba by tohle pomohlo.
AraxoN avatar 22.8.2007 15:02 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
To by sa dalo centrálne cez php.ini:
auto_prepend_file =
auto_append_file =
Sem dať PHP skripty, ktoré zalogujú začiatok a koniec.
AraxoN avatar 22.8.2007 15:09 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Alebo doplniť do každej položky cronu: "time <príkaz>" a potom prejsť výsledky...
22.8.2007 15:13 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
jelikoz sem si zrovna lamal hlavu jak sakra v PHP napisu nejake logovani (pls, nekamenovat, sic je to ostuda, tak v PHP neumim, ale to se brzo zmeni :)), tak tenhle napad sem docela uvital, diky :)
22.8.2007 15:16 Robert Kupka | skóre: 15
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Doporucujem tie skripty jeden po druhom spustit rucne a sledovat v druhom okne konzoly "top" a tiez stav swapu.
AraxoN avatar 22.8.2007 15:20 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Tipujem, že niektoré z tých skriptov predpokladajú, že sú spustené len raz za deň, prípadne že bežia v určitej dobe, takže ich ručné spúšťanie mimo rozvrhu môže zaváňať prúserom... Ja by som sa to urobiť neodvážil, zvlášť ak nie som autorom skriptu a nemám autora po ruke aby rýchlo opravoval prípadné škody takto napáchané.
22.8.2007 15:24 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
naprosto souhlasim
frEon avatar 22.8.2007 17:19 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
zkousel sis pustit kazdy z tech skriptu rucne (cd /cesta/ke/skriptu && php skript?) ?
Talking about music is like dancing to architecture.
AraxoN avatar 22.8.2007 19:59 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Predpokladám, že si zavrhol tú možnosť, že budeš v noci hore, prihlásený na server a pozorovať čo sa deje cez top. To by asi bolo najlepšie, ale aj bez toho sa dá poradiť - stačí večer pustiť top s presmerovaním do súboru, a ráno si to pozrieť... Nejak takto to bude logovať každých 10 sekúnd po dobu 16 hodín od spustenia, a ešte to bude aj priebežne pakovať:
top -d 10 -n 5760 | gzip > top.log.gz
Marián Kyral avatar 22.8.2007 20:40 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
A nemůže se náhodou stát, že se ten soubor nestihne zapsat na disk? Když se to ještě pakuje, tak to může být dost velký kus.
Marián Kyral avatar 22.8.2007 20:56 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
... který bude chybět.

Tam ještě mělo být :-)
AraxoN avatar 22.8.2007 22:38 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
To je fakt... jeden záznam z top-u zaberie len zopár kilo, takže ak sa zaloguje 5000 záznamov, tak to bude najviac niekoľko desiatok mega - toľko miesta sa snaď nájde.
23.8.2007 11:20 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Dobry napad, ale jeden maly detail, v topu vidim jen php a to treba nekolikrat, ale vzdy jen php, ja bych tam potreboval videt i parametry s kterymi bylo php pusteno, abych zjistil, ktere skripty tolik "zerou".
AraxoN avatar 23.8.2007 12:48 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
man top

;-)

Luboš Doležel (Doli) avatar 22.8.2007 20:43 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Opravdu to dělá PHP skript? PHP má běžně docela nízký paměťový limit.
AraxoN avatar 22.8.2007 22:57 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin

Až teraz som si všimol, že v nadpise spomínaš Apache, ale v tele príspevku nie. Znamená to, že cron spúšťa tie úlohy cez wget na ten istý stroj? V tom prípade nepomôže ani time, a ani top...

Nám sa pred časom stávalo, že apači sa množili a zväčšovali, až začali dobývať krajinu zvanú Swap a potom ich produktivita (ako aj produktivita ďalších obyvateľov servera) išla do pá-pá. Nakoniec sme zistili, že príčinou bolo opustené phpBB fórum, na ktoré chodili už iba spamboti. Bolo tam asi tak kadžilión tém a k ním badžilión spamových príspevkov. Apači, ktorí sa to pokúšali zobraziť sa razom nafúkli na 50 a viac mega a efektívne utlačovali všetko ostatné na tom serveri. Fórum sme nakoniec identifikovali a poslali do /dev/null kde malo sídliť už dávno.

23.8.2007 08:42 Kroko | skóre: 22
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
je pravda ze tyhle fora maj i dost velky naroky na komunikaci s DB, optimalizace zadna :(
http://kroko.evesnight.net
23.8.2007 08:58 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Jedna se o konzolove PHP (zadny wget), sem se rozhodl, ze pred kazdy prikaz php v cronu dam prikaz time a budu to logovat nekam do souboru, no a rano proste uvidim.......
23.8.2007 11:00 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit, ktery PHP skript zabiji Apache
Ach jo :(, tak sem to chtel udelat elegantne. Vytvoril jsem adresar
/opt/php5time/bin
a v nem vytvoril soubor php, ktery vypada nasledovne
#!/bin/bash
/usr/bin/time -a -o /var/tmp/log/time.log -f "Name: %C, Realtime: %E, 
Perc_CPU: %P, CPU_sys: %S, CPU_user: %U, Swapped_times: %W, Exit_stat: %X" /opt/php5/bin/php $@
jenze to nefunguje :(, presneji, funguje to napul. Kdyz vytvorim soubor skript.php, ktery vypada nasledovne (otazniky sem odstranil, pac se mi nedarilo to sem vlozit)
<
echo "ahoj\n";
>
a dam
/opt/php5time/bin/php skript.php
tak je to ok, napise to ahoj a zaloguje to ale kdyz vytvorim skript2.php
#!/opt/php5time/bin/php
<
echo "ahoj\n";
>
a dam ./skript2.php tak mi to da
/var/tmp/sktipt.php: line 2: ?: No such file or directory
ahoj\n
/var/tmp/sktipt.php: line 4: syntax error near unexpected token `newline'
/var/tmp/sktipt.php: line 4: `>'

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.