Apache a statistiky výkonu

Martin

Apache a statistiky výkonu
« kdy: 10. 10. 2010, 19:58:40 »
Mam Debian, Apache 2.2 s modulem php, a posledni dobou se stava, ze se server zahlti, sezere 4 GB ram a spadne. Nemuzu dohledat, ktera z domen to dela. Vsiml jsem si jen v htopu v prislusnou chvili, jak jeden thread mel 70% vyuzite ram. Snizil jsem pocet soubezne bezicich threadu, ale pokud to dela pouze jeden thread tohle mit vliv nebude...

Podezreni mam na 2 domeny, roundcube mail (s limitem 100MB na jeden pozadavek). A pro me neznamou domenu, kde se vyviji neco s PDF prevodem na bazi IMAGICKu (rozsireni pro php), tato domena ale zadne vetsi pametove limity nema.

Otazka tedy zni, mohu nejak ziskat statistiky, ktera domena a jak zatezuje server? Pripadne mohu to nejak limitovat, napada me prechod na suexec, ale o tom vim velice malo.

Diky za rady.
« Poslední změna: 10. 10. 2010, 21:36:50 od Petr Krčmář »


Ahmul

Re: Apache a statistiky výkonu
« Odpověď #1 kdy: 11. 10. 2010, 19:12:16 »
pokud requesty trvají delší dobu a jste schopný identifikovat id apache procesu, který spotřebovává větší množství systémových prostředků, můžete se zkusit podívat na status stránku, jaký zrovna zpracovává request

http://httpd.apache.org/docs/2.2/mod/mod_status.html

se zapnutým ExtendedStatus On

Alternativně můžete zkusit pustit na daný proces strace a dívat se, s čím pracuje, případně mrknout do otevřených filedesriptorů v /proc, resp. udělat to samé přes htop, pokud máte verzi z testingu.

HonzaC

Re: Apache a statistiky výkonu
« Odpověď #2 kdy: 21. 10. 2010, 13:13:20 »
Mel jsem stejny problem na slabem virtualserveru. (384 MB ramm)
Rovnez jsem laboroval s ExtendedStatus On, ale nic moc mi to neukazalo.
Htop taky nenapovedel a tejden to bylo beznadejny (jak vylit swap nad 200M, load vystoupl k nebezskym vysinam).

Taky jsem hledal nejaky povsechny analyticky nastroj, jak hrisniky objevit, ale nenasel.
nicmene, PHP ma snad nejaky memory_limit, dokonce v defaultu snad na 32M, takze bych necekal, ze 4GB ramm sezere jeden thread jednoho spatnyho skriptu.

V mem pripade problem spocival ve 2 webech na Joomla/VirtueMart, ktery byly zatezujici a kdyz si je zacal indexovat Yahoo, Google, Baidu a Seznambot ve stejne chvili naraz, pozadavek kazdy 2s, problem byl na svete. ... tedy, obecny pretizeni.

Nevim, zda Vam to pomuze, ale mala napoveda Vam treba precijen pomuze: do apache logu se stranky/logy zanesou az po dokonceni zpracovani skriptu, ale s casem zahajeni skriptu. Ve chvili, kdy dochazi k pretizeni a nektere pozadavky jdou pres sekundu, zatimco jine ne, casova souslednost v apache logu je porusena (log radek 12:00:00 nasleduje az za radkem 12:00:10).

Kdyz napisete nejakej shell skriptik, kterej si proleze accesslogy na vsech virtualech anebo vygrepuje, kde v jaky cas lezl nejaky UserAgent /bot/, treba vam to znacne napovi.

Stanislav Petr

Re: Apache a statistiky výkonu
« Odpověď #3 kdy: 21. 10. 2010, 19:12:53 »
Strasne jednoduchy, staci pouzit mpm_itk a pak to bude fungovat klasickej BSD accounting... Neni co resit.

e1

Re: Apache a statistiky výkonu
« Odpověď #4 kdy: 29. 10. 2010, 15:27:36 »
HonzaC, ako si to riešil?
Ja totiž mám teraz rovnaký problém, tiež jeden web s Joomla/VirtueMart. Okrem neho mám na serveri aj ďalšie stránky a minimálne jeden crawler skenuje stále a Google si teraz prelieza všetky weby už druhý deň. Už som raz úplne zamrzol. Teraz priebežne sledujem htop, a keď mi začne silno dochádzať swap, tak reštartujem Apache. Problém je v tom že naposledy my dokázal Apache zožrať za cca. 2 a pol hodiny 4GB RAM aj 4GB swap, čo je úplne choré.


HonzaC

Re: Apache a statistiky výkonu
« Odpověď #5 kdy: 29. 10. 2010, 17:28:27 »
Joomla/VritueMart jsou nenazrany hovada.
Trochu pomuze cachovani stranek.
Ale v zasade, jedinym spravnym resenim je predelam Joomlu  >:(
Ale vazne: snizil jsem maximalni pocet apache threadu (muzu si to dovolit, je to VS s 5 prezentacemi) a hlavne pridal do index.php cele prezentace toto
<?
$ua = $_SERVER['HTTP_USER_AGENT'];

// OK bots
if (StrPos($ua, "twenga") !== false) sleep(10);
if (StrPos($ua, "Googlebot") !== false) sleep(15);
if (StrPos($ua, "SeznamBot") !== false) sleep(10);
if (StrPos($ua, "YandexBot") !== false) sleep(10);
if (StrPos($ua, "msnbot") !== false) sleep(10);
if (StrPos($ua, "Heurekabot") !== false) sleep(10);
if (StrPos($ua, "Tagoobot") !== false) sleep(10);
if (StrPos($ua, "Jyxobot") !== false) sleep(10);
if (StrPos($ua, "Exabot") !== false) sleep(10);

// bad bots
if (StrPos($ua, "Java/1.5.0_07") !== false) sleep(15);

?>
... jinymi slovy, kdyz prijde Bot, at si pocka, nemilosrdne.
Povazoval jsem to nejdriv za prasarnu, ale po googlovani jsem zjistil, ze vetsine botu to nevadi.
Teoreticky existuje v robots.txt neco jako crawl-delay, ale dost botu to proste nerespektuje anebo pro me nerozkrytelne.

Lepsi reseni neznam...

PCnity

  • *****
  • 703
    • Zobrazit profil
    • E-mail
Re: Apache a statistiky výkonu
« Odpověď #6 kdy: 29. 10. 2010, 17:31:30 »
BTW: Nechce sa mi citat vsetko, ale mohol by pre vas byt zaujimavy mod_ruid...
*PHP by som aj tak s worker mpm radsej nepustal

1) Cize nasavit prefork
2) kazda domena iny UID
3) Pozerat pekne ktory uzivatel vytazuje + nastavit limity ;)