Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Jeden serwer, wiele usług

Witam,

Często spotykam się projektami przy których ludzie chcą aby dostosować im aplikację pod duże obciążenia bez podstawowych rzeczy jak memcache czy xCache lecz przygotwane do łatwego podpięcia tych usług. Jest to dość ciężka sprawa bo albo piszemy pod memcache albo nie i pozniej miesiacami przerabiamy kod.

Chcę zbudować aplikację przystosowane odrazu do wykożystania tych rzeczy, ale mam obawy czy początkowo na jednym serwerze nadmiar usług nie będzie zbyt uciążliwy dla maszyny. Czy będzie znacząca różnica przy wykożystaniu równolegle memcache który weźmie na siebie 90% obciążenia obok bazy danych od samego silnika bazy danych bez memcache?

Do tej pory miałem przyjemność realizować oprogramowanie na specjalnie prZygotowanych do tego architekturach przy których każda z usług była na oddzielnym serwerze.

Proszę o informacje:
na jakich maszynach najlepiej postawić serwer na którym wstępnie będą wszystkie usługi i jaki jest maxymalny próg obciążeń z jakimi są one w stanie sobe poradzić.
Mówiąc wszystkie usługi mam na myśli serwer www, php, mysql/postgresql, memcache, ewentualne xCache, wyszukiwarka (np: Xapian lub Lucine)

konto usunięte

Temat: Jeden serwer, wiele usług

Roman Piekarski:
Chcę zbudować aplikację przystosowane odrazu do wykożystania tych rzeczy, ale mam obawy czy początkowo na jednym serwerze nadmiar usług nie będzie zbyt uciążliwy dla maszyny.

Jeżeli chodzi o sam memCache, to wystarczy zmienić metody set/get z klasy obsługującej cache, nie ma "wielkiego" problemu z przerabianiem skryptu.

Na Twoje pytanie (próg wytrzymałości) w szczegółach nie odpowiem, jednak mam trochę doświadczenia z serwerami amazon'a (system ec2, wartości empiryczne dla najsłabszej jednostki)
- 1000 requestów na sekunde (lighthttpd + php) -> prosty skrypt
- 500 requestów na sekundę (apache + php) ->ten sam skrypt
- 200 requestów na sekundę (prosta strona z mocnym cache opartym o system plikow, LAMP)
- kilkadziesiąt requestów na sekundę -> ta sama strona bez cache.

mowa o 'stabilnym działaniu', nie na zasadzie "pochodzi 5 minut i umiera".
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Jeden serwer, wiele usług

Paweł Chalacis:
Roman Piekarski:
Chcę zbudować aplikację przystosowane odrazu do wykożystania tych rzeczy, ale mam obawy czy początkowo na jednym serwerze nadmiar usług nie będzie zbyt uciążliwy dla maszyny.

Jeżeli chodzi o sam memCache, to wystarczy zmienić metody set/get z klasy obsługującej cache, nie ma "wielkiego" problemu z przerabianiem skryptu.

Na Twoje pytanie (próg wytrzymałości) w szczegółach nie odpowiem, jednak mam trochę doświadczenia z serwerami amazon'a (system ec2, wartości empiryczne dla najsłabszej jednostki)
- 1000 requestów na sekunde (lighthttpd + php) -> prosty skrypt
- 500 requestów na sekundę (apache + php) ->ten sam skrypt
- 200 requestów na sekundę (prosta strona z mocnym cache opartym o system plikow, LAMP)
- kilkadziesiąt requestów na sekundę -> ta sama strona bez cache.

mowa o 'stabilnym działaniu', nie na zasadzie "pochodzi 5 minut i umiera".

Najbardziej interesuje mnie obciążenie generowane przez portale np informacyjne gdzie zlożoność i ilość samych zapytań do bazy zostanie przerzucona na memcache.

Ile żądań w danej sekundzie jest w stanie obsłużyć serwer przy np takim portalu jak np http://benchmark.pl?

O jakich kosztach takiego serwera mowimy?

konto usunięte

Temat: Jeden serwer, wiele usług

:)

Na jednej ciezko bedzie udzwignac naprawde mocno obciazony serwis, proponuje kilka maszyn - z czego nginx (jako proxy), dalej nginx(y) dla php-ow (lub lighty), dodatkowa maszyna(y - z shardingiem) na baze, pliki serwuj przez CDN-a (np Amazon) - lub zrob wlasna strukture np na podstawie Mogile'a.

A juz calkiem serio (chyba ze naprawde masz serwis ktory musisz postawic na min. 5-6 serwerach ;)) wszystko zalezy od wykorzystania - np sprawa dyskow - czy wiecej bedzie zapisu, czy odczytu, czy moze dane beda lotne i wiekszosc bedzie przechowywana w tabelach typu MEMORY. Powiem Ci jednak szczerze, ze my te decyzje podejmujemy z doradca od dostawcy. Kazda wieksza serwerownia zapewni Ci takiego doradce przy rozsadnym zamowieniu.

Ciezko jest zeby programisci wiedzieli dokladnie jaka maszyna bardziej nadaje sie na proxy, lub na baze. Dlatego ja nie bede Ci pisal specyfikacji technicznej - dlatego ze za malo sie na tym znam. Ale majac architekture zaprojektowana - rodzaj sprzetu pomoga wybrac w okreslonej serwerowni.

Pozdrawiam

konto usunięte

Temat: Jeden serwer, wiele usług

Paweł Chalacis:
- 1000 requestów na sekunde (lighthttpd + php) -> prosty skrypt
- 500 requestów na sekundę (apache + php) ->ten sam skrypt
- 200 requestów na sekundę (prosta strona z mocnym cache opartym o system plikow, LAMP)
- kilkadziesiąt requestów na sekundę -> ta sama strona bez cache.

1000 requestow na sekunde, jezeli zalozymy, ze kazdy spakowany jest gzipem i jest zoptymalizowany, zajmuje 10kB po spakowaniu to mamy:
- 1000 * 10kB = ~10MB/sek
- 10MB/sek daje ok. 100MBit (siec pracuje zazwyczaj 20% ponizej deklarowanej predkosci)
czyli throughput musi wynosic realnie 150-200Mbit/sek zeby to moglo dzialac. Nie liczymy nawet bazy danych (czas dostepu tu jest bezlitosny), chyba, ze zakladamy, ze wszystko idzie z cache (?). Czy to dobre obliczenia?

konto usunięte

Temat: Jeden serwer, wiele usług

Sebastian Pienio:
1000 requestow na sekunde, jezeli zalozymy, ze kazdy spakowany jest gzipem i jest zoptymalizowany, zajmuje 10kB po spakowaniu to mamy: (...)
Czy to dobre obliczenia?

chyba dobre ;)
W moim teście request ważył dużo mniej, był to prosty skrypt php wypluwający niewiele danych. Liczby podałem poglądowo, wiadomo, że żadna maszyna nie obsłuży 1000 requestów "normalnej" strony.
Test przeprowadzany był na serwerach ec2 z amazon web services, nie wiem jaką przepustowość gwarantują. Z doświadczenia jednak wiem, że jeżeli chodzi o łącze to te systemy są ciężkie do zajechania. Natomiast zajechanie S3 jest chyba niemożliwe (raz przy 50 milionach requestów do jednego pliku w ciągu kilku dni napisali maila, że sugerują cache ;))



Wyślij zaproszenie do