Sziasztok!
Egy egyszeri munkáról lenne szó csupán.
Leírom a probléma történetét :)
2 hónappal ezelőtt weboldalunkat egy PC alapú i7-es szerverrel szolgáltuk ki, 1700-1800 online user. 1600 user felett már kezdett lassulni az oldal, úgyhogy eljött az ideje, hogy komolyabb gépet vegyünk, aminek ez lett a nagyjából a konfigja:
2 x XEON 5504
4 x 2GB DDR3 1333
2 x 73 GB SAS
Áttettük rá az oldalt, beállítottuk a legjobb tudásunk szerint, és az oldal gyengébb volt mint valaha. Valószínűleg azért ment jobban a másikon, mert az i7 2,66-on ment, és hyperthread-es, ebben a xeon-ban viszont nincs hyperthreading, és csak 2 ghz-en pörög. A végeredmény az lett, hogy vettünk még két gépet, külön fájl, és külön mysql szervernek.
A szerver eddig BIX-ben volt, aztán átvittük Dataplexbe. Amikor átvittük, még csak az első, eredeti gép üzemelet, és biztos vagyok benne hogy nem a Dataplex hibája, de az oldal megint gyengébb lett, amint a költözés megtörtént (pedig csak az IP-ket írtuk át, semmi mást, a konfig maradt!).
Pár napra a költözés után bekerült a 2. és 3. szerver is. A 2. szerverre áttettem mysql-t. Így az elsőn csak apache maradt. Megint én voltam a bal***z valszeg, mert méglassabb lett az oldal, éppen hogy 1000 user-t ki tudott szolgálni. Gondoltam kipróbálom lighty-t is, hasonló eredmény fogadott. Aztán elkezdtem olvasgatni NginX-ről. Az upstream moduljának köszönhetően lehet 2 gépes clustert is csinálni, így az lett, hogy mivel a mysql nem vitt sokat (a php visz nagyon sokat), így a requestek 30%-át átirányítottam, hogy a 2. szerver szolgálja ki, az első a többit. Tényleg azt hittem, hogy így már okés lesz. De sajnos nem, a load a mindkét szerveren 3-5 között mozog, az oldal lassabb mint valaha, és 600 konkurens userrel szinte megáll az oldal. Az oldal betöltése gyors, csupán ott a probléma, hogy van amikor 1,5 percig is várakoztat betöltés előtt. Utána olyan, mintha valami HTML-t töltenék be.
Tudom jól, hogy a motort kéne lecserélni, de nem vagyok PHP programozó, nem bírnám, rengeteg tartalmat szolgálunk ki, és ez egy customized blogrendszer, amit nem erre terveztek. Rengeteg modult, bővítményt, plugint használok a rendszerhez, ami nagyon lassítja a php futást, viszont otthonosan mozgok a rendszerbe, váltani pedig nem szeretnék.
Szeretnék NginX-nél maradni, emiatt az upstream-es megoldás miatt, de hiába próbálom a webszerver vagy fastcgi konfigjait állítani, semmi nem vezet normális eredményre.
Szóval a munka az lenne, hogy ezt az NginX-es Cluster-t beállítani, biztos vagyok benne, hogy a beállításokkal van gond, ha eddig a sima i7-es PC-vel ki tudtuk normálisan szolgálni az oldalt.
Természetesen vevő vagyok más megoldásra is (Apache, lighty).
Olyan embert keresek, aki érti is a dolgát, tudja mit és miért állít, tudja mi hogy jó, és nem leírások alapján próbálkozik, a konfigokat mi is tudjuk írkálni.
Jelenlegi helyzetemnél fogva amit fel tudok maximálisan ajánlani eredményes munka esetén: 50.000 Ft (Számla megoldható, de akkor plusz ÁFA)
Ha érdekel a meló: wintercounter[KUKAC]vipmail.hu
- 1833 megtekintés
Hozzászólások
Valószínűleg azért ment jobban a másikon, mert az i7 2,66-on ment, és hyperthread-es, ebben a xeon-ban viszont nincs hyperthreading, és csak 2 ghz-en pörög.
Az uj gepen a proci mindig 100%-on porog..?
PHP-hoz hasznaltok valami opcode cache-t, pl. APC, eAccelerator..?
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
threading szempontból melyik a jobb? a dualcore v a hyperthread? :-)
Ok, tudom, h vannak bizonyos esetek, amikor több Core osztozik azonos cache területen, a különálló magok pedig saját cache-el bírnak, és nem minden esetben "olcsóbb" magot váltani, még akkor is ha az terheletlen - de ez sztem erősen felhasználás függő
kettő együtt, sokmagos proci (bár végülis, az szoftver szempontból olyan mintha több cpu-d lenne) plusz ht.
Amit ajánlani tudok.
- php cache (ACP,eac stb.)
- statikus cache (varnish,squid) -> inkább varnish, abban meg lehet oldani a LB-t is
- alkalmazás optzimalizáció
- mysql optimalizáció
Xeon 5504 vs i7
model Speed (GHz) L3 Cache (MB) QPI speed (GT/s) DDR3 Clock (MHz) TDP (W) Cores Threads Turbo-Boost
E5504 2.00 4 4.8 800 80 4 4 No
i7-920 2.66 8 6.4 1066 130 4 4 No
Azaz 2x annyi belső cache van benne, ha jól tippelek az i7 már Nehalem architektúra, azaz a xeon prociddal szemben itt már triple channel memóriakezelés - nem utolsó sorben prociban belül - nem pedig kívűl.
Természetesen vannak olyan Xeon procik is amik ilyet tudnak (de valószínűleg az alaplapod nem kompatibilis vele)
Javaslom, tegyél fel munin-t a gépre, és monitorozd a proci,ram,io kihasználtságot.
Az i7 gép milyen volt? SATA? ha igen, valószínűleg nem io problémád lesz, mert a SAS sokkal hatékonyabb.
A gép változás után mit tekergettetek el?
Vannak nagyon jó httpd tesztek, amivel benchmarkolni tudod a teljesítményt, javaslom használd őket minden változtatás után
(persze offline, hogy a külvilág ne kavarjon be)
Ha megoldjuk a problémád rávezetéssel, kérhetem h az összeg 20-50%-t utald át az FSF foundation-nek? köszi előre is :-)
(bocsánat de IMHO i7-920 csak 4.8GT/s QPI)
Az X55os szeria az mind Nehalem.
Viszont az adott proci azon túl, hogy az fent megadott adatok jók, csak 800MHz-es ramot támogat,
valamint az is false, hogy tripla channel-t tud, mert tudhat valóban, de ha az alaplap nem , akkor semmit nem ér.
A 2db Xeon contra 1db i7 eseten ekkora csokkenes nem lehet.. az órajel csak egy dolog.
Hi!
Szerverre volt pénzed, de 50.000 Ft-od van emberre? Sok szerencsét, kelleni fog. Meg mi az, hogy "eredményes munka esetén"? Megértem, hogy el akarod kerülni a hülyéket, de ez egy időigényes, átfogó tapasztalatot igénylő munka, a hülyéket először is úgy kerülöd el, hogy a szakember nem 50.000 Ft-ba kerül, aki meg ha azt mondja, hogy a gány php kódod miatt van ez, és ő nem tud rajta többet segíteni, akkor ez van, a munkáját ugyanúgy elvégezte, túrta a konfigokat, nézte a mysql állapotokat, lekérdezéseket, debuggolt, benchmarkolt. Én így látatlanban megmondom, hogy ez nem (csak) egy nginx kérdés.
Amúgy szervert venni is tudni kell, nyugodtan add át az üdvözletemet annak, aki ezt a konfigot eladta neked.
Üdv
Off: A munkának itthon nincs értéke. Gyakran tapasztalom, hogy adott projecthez a szervereket lazán túlméretezik, megveszik a drága brandet oda ahova jó lenne a pc, de nem fizetik meg a szakembert, aki a jól skálázott beszerzésen simán megspórolná saját fizetését. Inkább felvesznek egy kezdőt és kifizetik a túlméretezett szerverparkot, hogy aztán pár év alatt nullára amortizálódjon a drága vas és közben egy félkezdő üzemeltesse. Ezzel a hozzáállással már nagyon sokszor találkoztam itthon.
Nem a konkrét esetről beszélek.
Azért olyan is bőven van, hogy értelmesebb a hardvert bővíteni, mint újraírni a kódot. Kivéve, amikor nem :) 1 db kóder éves fizetéséből veszel kb. fél rack gépet, persze ha menet közben derül ki a gány rails alkamazásról, hogy 5 req/sec -et tud és 500 kéne, akkor nagyobb potenciál rejlik a megfelelő kóderben. :)
Amúgy a tévedés egyik fő oka, hogy marha sokan foglalkoznak a témával, de alig van, akinél nem lenne teljesen mindegy, hogy mit ír a konfigba, mert úgyse nézik annyian. Webkóderekre ugyanígy igaz, elég sokáig el lehet lenni a lassú kóddal, és ettől még mondjuk nem feltétlenül rossz, csak megengedheted a luxust, hogy a saját szempontjaid szerint haladj. (off: de jó is lenne. szerintem aki tud programozni, az tud gyors kódot is írni.) :)
megvetted, ok, és az üzemeltetés? azért fél racknyi gépnél az se tíz fillér...
Ahogy korábban már írták...
Proci, mem, swap, IOwait mit mutat??
SAS hdd, RAID vezérlőn lakik? Ha igen, van saját cache rajta? Ha igen, mekkora? Optimálisan van beállítva? Mennyi a Read/Write arány?
stb, stb, stb,
s csak utána kéne HTTP clusterrel foglalkozni.
"Tudom jól, hogy a motort kéne lecserélni"
- Akkor miért nem cserélitek le? Egyik szerver árából talán kijönne.
Milyen oldalról van szó, publikus?
Úgy néztem sql szervert még nem cserélted le, hasonló cipőbe végső megoldásként mysql lett lecserélve postgresqlre,érdekes módon minden rendbejött.Én is azt hittem hogy viszonylagos nagy mennyiségű php kód lassú,egy próbát megérne szerintem.
Szegény feje eddig bármit lecserélt, csak lassabb lett...