Hej!
Dzisiaj jedna rzecz mnie zaskoczyla i to bardziej niz moglem sie spodziewac... wiec postanowilem sie podzielic nieco ciekawostka
Mam 2 takie sobie serwerki www w bardzo bliskich konfiguracjach, oba serwuja dokladnie ten sam content (z lokalnych dyskow aby nie bylo), oba sa podpiete pod tego samego switcha, oba maja dyski o tej samej wydajnosci itd...
Moze maly wstep o konfiguracji maszyn:
Serwer 1:
2x PIII 1.4GHz (zglasza 2793.12 bogomips na kazdym procku)
2GB RAM
apache 2.0.x + mod_fastcgi + mod_php + mod_ssl ---> mpm-prefork tuningowany
Serwer 2:
1x Xeon 2.4GHz (zglasza 4778.29 bogomips)
1GB RAM
apache 2.2.x + mod_fastcgi + php jako fastcgi + mod_ssl ---> mpm-worker konfigurowany na oko
Wiedzialem ze serwer 2 powinien byc nieco szybszy... Ile w tym sprawa procka ciezko powiedziec, ale sadze ze niewiele - na pewno mniej niz kwestia workera w apaczu. Pytanie tylko i ile bedzie szybszy? Dzisiaj sie przekonalem :-o
Odpalilem dzisiaj juz produkcyjnie load-balancing wiec pod jednym IP czai sie tak na prawde farma kilku serwerkow, 2 sa juz aktywne, kolejne czekaja na konfiguracje... Podpialem wiec te dwa co powyzej (maja te same dane wiec moge je podpiac - nie wazne ktory dostanie request i tak zwroci klientowi to samo co jego kolega). Ustawiajac balancer ustawia sie wagi poczatkowe serwerow - waga im wyzsza tym maszyna mocniejsza a co za tym idzie do niej bedzie kierowane wiecej ruchu. Load balancer oczywiscie ma iles sposobow rozkladania ruchu - od round-robin i static weights poprzez adaptive, fastest response, least connections a na 'agent response' konczac.
Jako algorytm wybralem 'adaptive' - oznacza to w skrocie ze wagi dla maszyn beda modyfikowane automatycznie w trakcie pracy tak, aby odzwierciedlaly ich rzeczywista moc w danej chwili - jak serwer zacznie sie przytykac to waga bedzie obnizana, jak bedzie mial luz to bedzie szla w gore - po jakims czasie sie to stabilizuje generalnie. Oczywiscie jak obciazenie spada to cluster przestaje sie uczyc bo nie ma to sensu - interesuje nas wydajnosc systemu gdy jest najbardziej zapchany zapytaniami.
Dodajac serwery dla #1 dalem wage poczatkowa 90, dla #2 dalem 110. Wydawacby sie moglo ze mniej wiecej powinienem trafic... no i trafilem - daleeeeeeko od rzeczywistosci!
Po 15 minutach pracy na 2 maszyny wagi zatrzymaly sie na (teraz lepiej usiasc):
- #1 ---> 60
- #2 ---> 167
#2 wyrabia 278% tego co #1 - az nie moge uwierzyc... nawet biorac spora poprawke na pomiar i tak mamy > 200% wydajnosci, tak wiec zaczyna sie robic ciekawie - tylko dzieki temu ze nie ma php w apaczu - jest zewnetrzny proces i apacz uzywa watkow do obslugi zapytan. Kiedys pisalem juz o uzyciu pamieci na maszynie ale to jest pierwszy test jaki tak na prawde udalo mi sie przeprowadzic w dosc jednolitym otoczeniu.
Za pare(nascie) dni jeszcze zanim dodam kolejne maszyny bede aktualizowal #1 do tej samej konfiguracji co #2 i wtedy zobaczymy jak sie porownuja maszyny
Co o tym sadzicie? Moze popelnilem gdzies blad? Jakie macie pomysly aby ujednolicic pomiar (troche moge pogrzebac ale to system live, wiec nie moge nic zepsuc hihi).