Fórum Root.cz

Hlavní témata => Server => Téma založeno: Martin 10. 10. 2010, 19:58:40

Název: Apache a statistiky výkonu
Přispěvatel: Martin 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.
Název: Re: Apache a statistiky výkonu
Přispěvatel: Ahmul 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.
Název: Re: Apache a statistiky výkonu
Přispěvatel: HonzaC 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.
Název: Re: Apache a statistiky výkonu
Přispěvatel: Stanislav Petr 21. 10. 2010, 19:12:53
Strasne jednoduchy, staci pouzit mpm_itk a pak to bude fungovat klasickej BSD accounting... Neni co resit.
Název: Re: Apache a statistiky výkonu
Přispěvatel: e1 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é.
Název: Re: Apache a statistiky výkonu
Přispěvatel: HonzaC 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...
Název: Re: Apache a statistiky výkonu
Přispěvatel: PCnity 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 ;)