Apache2 PostFix || Probléma megoldást kérek a szakemberektől!

Fórumok

Sziasztok!

Nem tudom pontosan, hogy jó helyre írok-e ez az első bejegyzésem és örülök hogy végre tag lehetek. Ez amolyan előszó. :) Nah a probléma.

Üzemeltetek egy kis hosting féleséget, amelyik olyan 19-20 tárhelyet szolgál ki apache2 http daemonnal és a levelező rendszerért a PostFix mail server felelős. A probléma nem a load nagysága, inkább a webszerver lassúsága. Bizonyos oldalak egészen lassan generálódnak le a gépen (aminek 0.5MS körül kéne van hogy 200ms ami lassúnak számít), 0.8 as load mellett, és ha néhány oldalt letöltenek esetleg többen akkor meg 4-5 load -ra növekszik, majd visszaesik ismét 1 alá. Ez tehát a fő probléma.

Az apache webszervernél prefork-ot használok, és a beállítások a következők:

ServerRoot "/etc/apache2"

#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
#
#
LockFile /var/lock/apache2/accept.lock
#
#

PidFile /var/run/apache2.pid

#
# Timeout: The number of seconds before receives and sends time out.

TimeOut 45
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 80

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 50
MaxRequestsPerChild 500

Próbáltam dolgokat. Ha kicsit visszaveszem a gyeplőt akkor kissebb a terhelés, és egy darabig gyors is, majd ahogy a kérések átlaga nő 3-4 re, belassul szép lassan. Apache status szerint 1-2 napos üzemidő után egy 2-4 közötti a kérések száma másodpercenként a terhelés .250% körüli folyamatok is 10-15 körül, szóval szerintem nem sok, de mégis lassulgat. Néztem már grafikont muninnal is. Ugye ha nyitva van a status akkor azért több erőforrást eszik, így pár napja kikapcsolva tartom, de így is lassulgat.

PostFix-el annyi kérdésem lenne, hogy lehet-e korlátozni hasonló módon mint a SendMail-t. Például maximális load.

Előre is köszönöm a segítséget aki majd foglalkozik a témával!

UPDATE!
Gép config: intel quad 2.4Ghz 4GB ram

Üdv:
wolfnet

Hozzászólások

Ettől azért több post-ra számítottam ^^
wolf

hali,
kezdetnek nézd meg, hogy csak azok az apache modulok töltődnek-e be, amikre szükséged van.
KeepAliveTimeout-ot én felvenném 5-re és a MaxKeepAliveRequests-t meg lejjebb mondjuk 40-re - de nagyon függ attól, hogy milyen oldalakat szolgálsz ki.

megérne egy tesztet mondjuk, hogy csak statikus oldalakat szolgálsz ki. könnyen lehet, hogy nem az apache a hibás, hanem a dinamikus oldalakat kiköpő szkriptek.

s_balazs:
igen előfordulhat, viszonylag sok - és mondhatni elsősorban - dinamikus és optimalizálatlan php motorokat futtatnak a felhasználók, ezért elsősorban olyan config kellene, ami úgymond felkészült az ócska motorokkal rendelkező ám nagy forgalmat lebonyolító userekre.

StartServers 15
MinSpareServers 15
MaxSpareServers 30

A SpareServer -ek száma fontos. Ugyanis ha egy időben esik be mondjuk 10 ember (pontosabban 10 http request) és csak 5 tartalék apache2 processed fut, akkor előbb el kell még indítania az 5 tartalékon felül még 5 -öt és az több időt vesz igénybe.
Ezekkel az értékekkel lehet kísérletezni! ;)

Nos azért teljesen nem múlt el a probléma. Mostanában kicsit több dinamikus oldalt kell kiszolgálni és rendszeresen előfordul olyan hogy 4-5 óra stabil működés után arra leszek figyelmes hogy 30 as a load, akad a gép :D . Apache stop, és minden visszaáll eredetibe.

valoszinuleg valamelyik weblap mogotti sql query van elqurva.
a dinamikus oldalak backend dbjenek hangolasa segithet valamennyit, meg nezd meg ulimit -n -el, hogy mennyi a parhuzamosan nyitvatarthato fileok szama, ha 1024 vagy kevesebb, nezd meg mi tortenik, ha megemeled.
pl :
/etc/security/limits.conf -ba :
* soft nofile 2048
* hard nofile 2048

ezutan sql szerver, apache restart.
amugy mennyi memoria van a gepben ?

Nem elképzelhető, hogy 4-5 óránként fut mondjuk vmi script? Backup, szinkronizálás, hasonlók.
apache-top, mtop? Ezeket próbáltad esetleg?
Még egy ötlet: vírus? :) /Nem találkoztatok esetleg olyannal, hogy oldal betöltődésekor először üres lap. Frissítés és megy minden? Vagy éppen az oldalakba oda nem illő tartalom jelenik meg? Bejelentett támadó webhely figyelmeztetés? Víruskereső figyelmeztetése átirányításokra?/

Ilyesmibe futottam bele én is pár hónapja. Én ezt csináltam:
- kernel frissítés
- apache2 frissítés
- mysql innodb->xtradb + kis hangolgatás
- eaccelerator
- plusz memória a gépbe
- apache2 keepalive levesz kicsire (sok, nem visszatérő vendégem volt itt, így ez nem játszik nálam)
- mysql wait time-okat levettem 10-20 másodpercre

Az utolsó inkább a béna SQL kódoktól védett meg és attól, hogy az "ügyfelek" csak nyitni szeretnek kapcsolatot, de zárni már nem igazán (Biztos nem szerepelt a tananyagban.) és a mysql meg várna rájuk elég sokáig, persze feleslegesen foglalva az erőforrásokat.

- az Apache-nál mpm-prefork helyett mpm-worker-rel próbálkoznék. Szerintem gyorsabb - ha nincs valamilyen akadálya a használatának.
- ha PHP-s oldalakat szolgálsz ki, akkor nagymértékben gyorsíthat valamilyen cache: pl. pecl-APC, vagy eaccelerator.
- load-ot tud csinálni email szűrő is. Használsz valamit?
- a lassúságot okozhatja io-wait is: van-e külön partíciója az Apache-nak, milyen fájl rendszer, jó-e az alatta lévő vinyó? Hova dolgozik a PHP cache?

Üdv,
Dw.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

++mysql

Ja és rosszabb minőségű hardware-es (de azért drága) RAID vezérlők RAID5-tel siralmasan lassúak is tudnak lenni.

Dw.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Oh emberek, mennyi üzenet. Néhány napra nem nézek ide mondván el lettem felejtve és tessék!

Nah a helyzet, régebben volt valami vírusos site. Valami javascriptes vírus cucc volt, lehet hogy ólálkodik valami a gépen, nem tudom.

SQl nél a wait 10 secen van, a táblák típusára myisamot használok.

Nincs semilyen phpcacher telepítve jelenleg, mpm-prefork van használva tudomásom szerint, bár hogy pontosan hogy kellene használni nem tudom. aki ebben nagy szaki a wolfnetteam@gmail.com címen vegye fel velem a kapcsolatot, szívesen elküldök minden config fájlt, csak oldódjon meg.

IOWAIT igen, volt v ele gond, mostanában 0.0, nincs külön partíció, egy 600as WD van alattunk, sata2, nincs vele gond. Nincs se raid se semmi.

2GB ramunk van, egy core2 intel, 2.4Ghz-vel. i686 debian 5.0 naprakész frissítésekkel.

Ami érdekes hogy fut-fut teljesen stabil, 1-2 es load, kibaszott gyors, egyszóval nincs gondja. És akkor egyik percről a másikra nem nézek rá, 20as load, 80% os SQL terhelés, 4-5 nagyobb apache folyamat. A szerón még netrádiók futnak, összesen olyan 70 hallgatóval, elosztva 4 rádióra, nem hiszem hogy nagyon bekavarnának de tény hogy negatív irányba hajlik tőle a dolog.

>> 19-20 tárhelyet szolgál ki apache2 http daemonnal és a levelező rendszerért a PostFix mail server felelős.
>> IOWAIT igen, volt v ele gond, mostanában 0.0, nincs külön partíció, egy 600as WD van alattunk, sata2, nincs vele gond
>> 2GB ramunk van, egy core2 intel, 2.4Ghz-vel. i686 debian 5.0 naprakész frissítésekkel.

Pedig ez nagyon iowait -nek néz ki. Meg RAM hiánynak. Ez a gép egy db. napi 20-30 ezer látogatót kiszálgáló php+mysql oldal alá is kevés (ha sok sql query van). 19-20 statikus laphoz persze simán jó.

Azért olvass utána az adatbiztonságnak, használj RAID-1 -et vagy készíts mentést rendszeresen egy külső winchesterre vagy egy másik tárhelyre, mert ez így gáz.