Lighty alapkérdések (volt "Lassú Apache" topic)

Fórumok

Üdv néktek,

Adott a következő konfig: AMD6000+ x2 64bit, 4x2 GB 800MHz dual channel DDRII RAM, 4db SataII winchester RAID -be kötve. A szerveren Ubuntu Server Edition 8.10 64bit fut + Apache2.2 (apache2-mpm-prefork) + php5 (libapache2-mod-php5) + MySQL5 (+vsftp). Webszerverként funkcionál, n darab domain -nel. 100 Mbites porton csücsül.

Maga a szerver gyors, FTP -n nagyon gyorsan tudok kapcsolódni hozzá, fájlokat le/feltölteni, SSH -n is gyors.

Viszont a rajta host -olt weblapok este, csúcsidőben belassulnak... ilyenkor kb. 600-1000 ember próbálja egyidőben elérni a weblapok valamelyikét. (a load nem magas [0.6-0.2 között ingadozik], a swap tárhely egyáltalán nincs használatban, "elfér" minden a memóriában)

Az Apache konfigom a következő (ezt a részt gondolom érdekesnek, azért csak ennyit másolok be):


Timeout 10
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 5

<.IfModule mpm_prefork_module>
    StartServers           25
    ServerLimit           256
    MinSpareServers        15
    MaxSpareServers        75
    MaxClients            256
    MaxRequestsPerChild  1000
<./IfModule>

HostnameLookups Off

Gugliztam már Apache teljesítmény hangolásra (természetesen angol leírások között is), de volt, hogy teljesen ütköző elvek alapján összerakott konfigokat találtam... pl. egyik helyen a Timeout értékének 10 -et javasolnak, másik helyen 1000 -ret...

Ha valakinek van hasonló kihasználtságú webszervere vagy dolgozik ilyennel, az kérem, segítsen!

Köszönöm előre is!

UPDATE: időközben Apache helyett Lighty -ra váltottam, ezért lentebb már azzal kapcsolatban kérdezek! :)

Hozzászólások

Nem dinamikus oldalak ezek veletlenul?

--
Fontos feladatot soha ne bizz olyan gepre, amit egyedul is fel tudsz emelni!

Ha netán dinamikus oldalak lennének, érdemes lenne megnézni, hogy mire kell sokat várni. (sql,auth backend,php fordító)

Dinamikus, php oldalak vannak rajta. A generálási idejük kb itt alakul: 0.0627 másodperc

Használok eAcceleratort a php kód cachelésére (64 MB memória van kiosztva az eAccelerator részére, ebből átlag 32 MB van felhasználva)

Ha netán dinamikus oldalak lennének, érdemes lenne megnézni, hogy mire kell sokat várni. (sql,auth backend,php fordító)

Nagyjából milyen logokat olvasgassak ezzel kapcsolatban? :) (Munin nincs telepítve)

Slow_queries 0

Lekérdezési statisztika: Az indulás óta 68 030 421 kérés került elküldésre a szerverhez.

Összesen ø óránként ø percenként ø másodpercenként
68 M 255.88 k 4.26 k 71.08

Szerver forgalma: Ezek a táblázatok a MySQL szerver hálózati forgalmának statisztikájáit mutatják az indítástól kezdve.

Forgalom 1 ø óránként
Fogadott 8 202 MB 31 MB
Küldött 744 GB 2 867 MB
Összesen 752 GB 2 898 MB

Kapcsolatok ø óránként %
Max. egyidejű kapcsolatok száma 28 --- ---
Sikertelen próbák 1 0.00 k 0.00%
Megszakítva 14 k 52.41 0.67%
Összesen 2 089 k 7 856.97 100.00%

Próbáld meg KeepAlive off beállításokkal, kapcsold be a syn sütiket, nézz slow query logot, az alkalmazásba implementálj Memcachet, profiling, stb.

mpm_prefork helyett mpm_worker v. mpm_event + mod_php helyett fastcgi

... kb. 600-1000 ember próbálja egyidőben elérni a weblapok valamelyikét ...

MaxClients 256

Ez így rendben van?...

--
maszili


ServerLimit 1000
MaxClients 500

Persze ki kell kalkulálni, hogy mennyit bír el a gép memóriával. Nézd meg, hogy átlagosan mennyi memóriát fogyaszt egy apache szál, majd az apache-nak szánt memóriát oszd el egy szál memória átlagával. Így megkapod, hogy közelítőleg mennyi szál fér el egyszerre a memóriában.

--
maszili

Mivel többen javasoltátok, hogy fastcgi modulként kellene használni a php -t, ezért Lighty -ra váltottam (tudom, Apache is tud ilyet... de ha már fcgi, akkor szvsz Lighty).

Viszont akad 1-2 kérdésem a Lighty -val kapcsolatban... már böngészem egy ideje a konfig fájlokat a neten, meg a tippeket, de arra pl. nem bírok rájönni, hogyan tudok úgy létrehozni egy virtualhost -ot, hogy az csak a 443 -as portra hallgasson, szóval csak https -en keresztül legyen elérhető.

Így néz ki a konfig:


$HTTP["host"] == "phpmyadmin.mydomain.com" {        
server.indexfiles          = ( "index.php" )
server.document-root             = "/srv/web/phpmyadmin/"    
}

Ezt szeretném úgy megfaragni, hogy csak a 443 -as porton hallgasson. Most engedélyezve van az ssl-mod az egész Lighty -ra, ezért minden hostolt domain hallgat a 443 -ason is... meg a 80 -ason is. Ez is elérhető a http://phpmyadmin.mydomain.com címen és a https://phpmyadmin.mydomain.com címen is... :S