Temat: 1 master + 25 slaves - wydajnosc?
Radosław Bułat:
Ja mam trochę inne pytanie. Co to za rodzaj ruchu będziesz mieć? 50k userów, ale w jakim czasie i jaka przewidywana aktywność. Co ci użytkownicy będą robić? Czy będą się logować? Czy będą widzieć unikalną zawartość?
Mam wrażenie, że takie rozproszenie mysql nic Ci nie da. Wydajność selectów można poprawić zupełnie poza bazą (memcache). Pierwszy raz spotykam się z tak rozbudowaną infrastrukturą pod mysql (zaryzykowałbym że taka nasza-klasa pod bazę nie musi tylu zasobów dawać).
Jest to 60 minutowa akcja marketingowa i ruch ma byc zagwarantowany dla 50tys userow, nie mozna przewidziec jak rozlozy sie ruch, nalezy zalozyc najgorszy przypadek czyli jednoczesnie przez 60 min. Przeniesienie wszystkich statycznych plikow na Amazon CDN CouldFront zredukowalo ilosc requestow z 21 na uzytkownika do jednego, czyli 1 user = 1 request do strony.
Strona w php po zainicjowaniu tresci z DB na starcie (2 x select) wysyla do DB updatey i inserty via ajax api. Uzytkownicy poprzez aktywnosc wyzwalaja ajaxowe requesty do web serwerow ktore updateuja mastera DB, odswiezanie strony odbywa sie zgodnie z harmonogramem przez select z lokalnej DB-slave ktora synchronizuje sie z masterem
- pomysl podpatrzony na flickr.com, update i insert leca do master, selecty leca ze slave'ow
Rozproszenie na 20 serwerow wynika z koniecznosci obslugi http requestow, max 1 maszyna daje rade obsluzyc ok 2500-3000 requestow/s czyli moj load balancer potrzebuje ok 20-25 serwerow EC2, kazdy to 68GB ram - mysqld smiga na tym bez problemow i widze jak LOAD ladnie sie rozklada, obserwujac zuzycie CPU i pamieci przez proces mysql widze ze dziala wysmienicie - testy AB i SIEGE
Pytanie jak zachowa sie master-DB gdy 20 slave'ow bedzie chcialo sie synchronizowac, jak wyglada kolejkowanie tego? Duzo danych bedzie cachowanych po 30-40 sekund wiec ilosc zapytan do db bedzie rowniez mniejsza ale moze zdarzyc sie ze w jednym momencie chec synchronizacji zglosi np 15 slave'ow... :)
Memcache chyba odpada.. chyba ze jest jakis mechanizm do synchronizacji memcachu pomiedzy wieloma serwerami z rozsadnym czasem wykonania?
BTW NK ma hardwerowe rozwiazania, ja nie mam na to budzetu, amazon jest tani i idealny na krotkotrwale akcje
Arkadiusz K. edytował(a) ten post dnia 03.08.10 o godzinie 00:23