konto usunięte

Temat: Widget i zużycie serwera

Witam!

Tworzę widget, który wyświetlany będzie na różnych stronach niezależnych ode mnie.

Przeprowadziłem obliczenia:

1) ilość stron z widgetem = 200
2) średnia ilość odsłon na pojedynczej stronie = 150.000
3) wielkość widgetu w kb = 26

Wartości dla okresu miesięcznego oczywiście.

Z obliczeń wyszło mi, że przy tych (dość realnych moim zdaniem) danych otrzymuję obciążenie:
- 11,57 req/s
- transfer na poziomie 0,72 TB/miesiąc
- 30mln odsłon widgetu

Nie wiem czy dobrze liczę i czy moję rozumowanie jest dobre. Jeśli nie to proszę o poprawienie, ale czy przy takich parametrach nie padnie mi serwer? Zwłaszcza te 11,57 req/s mnie przeraża. Fakt - jest to wartość uśredniona, ale z tego wynika że w porze większej oglądalności ta wartość jeszcze... wzrośnie! Sam transfer to jeszcze można przeżyć, ale i tak jest ogromny.

Dane, które tutaj podałem i tak są skromne(co to jest 200 serwisów). Jak takie sprawy załatwiają serwisy ze znacznie popularniejszymi widgetami? Nie mówię o gigantach jak facebook, ale wiele średnich serwisów na polskim podwórku posiada małem widgety, które potem pojawiają się na setkach mniejszych stron. Może zasugerujecie mi jakieś optymalniejsze rozwiązanie? Planuje jak większość udostępniać widget poprzez specjaln kod JS, który odwołuje się do mojego serwera. Tyle.

Liczę na owocną dyskusję i waszą pomoc.

Pozdrawiam,
Piotrek.Piotr Parzentny edytował(a) ten post dnia 23.11.09 o godzinie 17:10

Temat: Widget i zużycie serwera

Dokładnie nie odpowiem bo nie wiem jak to wygląda, jednak:
- pamiętaj że strony są odwiedzane w różnych porach i w tak zwanym szczycie, ilość req/s może wynosić znacznie więcej niż wyliczyłeś a w innym czasie zdecydowanie mniej

- serwer dedykowany rozumiem jest?

- pomyśl nad optymalizacją (zmniejszeniem rozmiaru pliku z widgetem, 26kb to sporo..)

- większość przeglądarek złapie plik do cache i będzie go trzymała jakiś czas, więc liczba reg/s nie jest dokładnie taka jak wyliczyłeś

konto usunięte

Temat: Widget i zużycie serwera

Ogólnie to nawet zamiast serwera dedykowanego bardziej zastanawiał bym się na jakimś CDN'em (hint: Amazon S# etc.). Oczywiście większy sens ma to jeśli widżet jest oferowany bardziej "globalnie" niż np. tylko dla Polski (niestety CDN od TP jest jeszcze w powijakach).

Oczywiście tak jak napisał Adrian, weź pod uwagę że tak zwany "szczyt" zazwyczaj przypada na godz. od 17-18 do 21-22, a praktycznie "zerowy" ruch to godz. od 1 do ok. 7-8, tak więc ilość uśredniona r/s będzie dużo wyższa niż ta z Twoich wyliczeń.

Kolejną rzeczą będzie optymalizacja, a mianowicie zaczynałbym od wysyłania odpowiednich nagłówków (cache przeglądarek o którym wspomniał Adrian), kompresji zwracanych danych (hint: gzip).

konto usunięte

Temat: Widget i zużycie serwera

Adrian Staniszewski:
Dokładnie nie odpowiem bo nie wiem jak to wygląda, jednak:
- pamiętaj że strony są odwiedzane w różnych porach i w tak zwanym szczycie, ilość req/s może wynosić znacznie więcej niż wyliczyłeś a w innym czasie zdecydowanie mniej

Zgadza się! Podana wartość jest oczywiście uśredniona.
- serwer dedykowany rozumiem jest?

Tak.
- pomyśl nad optymalizacją (zmniejszeniem rozmiaru pliku z widgetem, 26kb to sporo..)

Czy sporo? Dla przykładu wziąłem sobie widget AdTaily - http://static.adtaily.com/widget.js. 24kb. Do tego u mnie skrypt odwołuje się do serwera, pobiera grafiki z serwera itp. Więc te wartości zawsze są większe.
- większość przeglądarek złapie plik do cache i będzie go trzymała jakiś czas, więc liczba reg/s nie jest dokładnie taka jak wyliczyłeś

Fakt.

konto usunięte

Temat: Widget i zużycie serwera

Józef Tomasz B.:
Ogólnie to nawet zamiast serwera dedykowanego bardziej zastanawiał bym się na jakimś CDN'em (hint: Amazon S# etc.). Oczywiście większy sens ma to jeśli widżet jest oferowany bardziej "globalnie" niż np. tylko dla Polski (niestety CDN od TP jest jeszcze w powijakach).

Nad S3 myślałem do przechowania obrazków. W sumie do trzymania w nim JS też można go użyć....

Ciekawy pomysł.

Cache jak najbardziej też jest dobrym rozwiązaniem.

konto usunięte

Temat: Widget i zużycie serwera

Piotr Parzentny:
- pomyśl nad optymalizacją (zmniejszeniem rozmiaru pliku z widgetem, 26kb to sporo..)

Czy sporo? Dla przykładu wziąłem sobie widget AdTaily - http://static.adtaily.com/widget.js. 24kb. Do tego u mnie skrypt odwołuje się do serwera, pobiera grafiki z serwera itp. Więc te wartości zawsze są większe.

Kilka uwag odnośnie mojej wiedzy na temat AdTaily:
- korzystają z CDN, jeśli mnie pamięć nie myli właśnie z Amazona, ale taka już ich specyfika (nie wszystkie serwisy w ich sieci mają odwiedzających z tylko i wyłącznie Polski),
- używają "kompresji" js'a (prawdopodobnie YUI Compressor)
- korzystają z kompresji gzip o której wspomniałem, dzięki czemu wysyłają do Ciebie 5kb danych, a nie wspomniane 24kb)

Co do obrazków pamiętaj, iż każdy obrazek to kolejny req do serwera, można korzystać z "montowania" obrazków w pliku js ("kompresja" base_64), bądź też redukować max. ilość obrazków i korzystać ze "szkieletów" (hint: http://www.google.pl/search?q=css+sprites)

konto usunięte

Temat: Widget i zużycie serwera

Józef Tomasz B.:
Co do obrazków pamiętaj, iż każdy obrazek to kolejny req do serwera, można korzystać z "montowania" obrazków w pliku js ("kompresja" base_64), bądź też redukować max. ilość obrazków i korzystać ze "szkieletów" (hint: http://www.google.pl/search?q=css+sprites)

Uwaga offtopic: angielskie "sprite" tłumaczy się od lat osiemdziesiątych ubiegłego wieku na "duszek" - także w domenie informatycznej.

konto usunięte

Temat: Widget i zużycie serwera

Piotr Likus:
Józef Tomasz B.:
Co do obrazków pamiętaj, iż każdy obrazek to kolejny req do serwera, można korzystać z "montowania" obrazków w pliku js ("kompresja" base_64), bądź też redukować max. ilość obrazków i korzystać ze "szkieletów" (hint: http://www.google.pl/search?q=css+sprites)

Uwaga offtopic: angielskie "sprite" tłumaczy się od lat osiemdziesiątych ubiegłego wieku na "duszek" - także w domenie informatycznej.

Tak, zgadza się, po to też wykorzystałem "" aby zaznaczyć iż nie jest to tłumaczenie, tylko że tak powiem spolszczenie (choć pewnie bardziej już pasowała by tu "siatka") :)

Koniec offtopa.

konto usunięte

Temat: Widget i zużycie serwera

Kilka uwag odnośnie mojej wiedzy na temat AdTaily:
- korzystają z CDN, jeśli mnie pamięć nie myli właśnie z Amazona, ale taka już ich specyfika (nie wszystkie serwisy w ich sieci mają odwiedzających z tylko i wyłącznie Polski),
- używają "kompresji" js'a (prawdopodobnie YUI Compressor)
- korzystają z kompresji gzip o której wspomniałem, dzięki czemu wysyłają do Ciebie 5kb danych, a nie wspomniane 24kb)

Rozumiem. Cenne informacje. Dzięki.

Idać dalej tym tropem: załóżmy, że mój plik JS z widgetem umieszcze sobie na S3. Ma to sens? Czy lepiej trzymać ten pliczek na własnym dedyku? Nie ukrywam, że przeraża mnie ta ilość requestów na sekundę, która może być w szczytowych godzinach oglądalności!

Temat: Widget i zużycie serwera

Nie wiem czy dobrze podałeś dane, jednak jeśli tak to sprawdź sam statystyki dowolnej strony, która ma jakiś standardowy nawet nie bardzo atrakcyjny content. Na jedne odwiedziny przypadnie Ci ok. 5, może 6 odsłon. Dodatkowo niektóre przeglądarki mogą trzymać pliki w cache nawet po zamknięciu i wykorzystać je przy kolejnej, kolejnych wizytach. Tutaj sporo Ci spadnie z tych 150.00, jedyne co pozostaje to duży ruch podczas pewnych okresów czasu.

Jeśli zastosuje się do rad z tego tematu (cache + optymalizacja) to nie powinno być przynajmniej na tym etapie problemów z widgetem.

konto usunięte

Temat: Widget i zużycie serwera

To może z innej strony podejdę do tematu.

Wejdźmy na stronę: http://antyweb.pl (swoją drogą polecam ten blog!)

Po prawej stronie mamy ankietę do głosowania (z AJAXem jak sądzę). Załóżmy że chcę zrobić taki serwis, który takie ankiety udostępnia jako widget. Jak najlepiej i najwydajniej do tego podejść? Może ktoś jakieś gotowe przykłady ma i zechce udostępnić? Coś podpowiedzieć? Dodatkowo powiem, że użytkownik u mnie w serwisie na swoim koncie edytuje sobie te pytania a widget sam je pobiera ode mnie. Jak właśnie do takiego mechanizmu podejść?

Pozdrawiam.
Robert B.

Robert B. Web Development
Manager

Temat: Widget i zużycie serwera

<kryptoreklama>
http://talen.jogger.pl/kategoria/duze-portale/
</kryptoreklama>

Piotr Parzentny:
Po prawej stronie mamy ankietę do głosowania (z AJAXem jak sądzę). Załóżmy że chcę zrobić taki serwis, który takie ankiety udostępnia jako widget. Jak najlepiej i najwydajniej do tego podejść? Może ktoś jakieś gotowe przykłady ma i zechce udostępnić? Coś podpowiedzieć? Dodatkowo powiem, że użytkownik u mnie w serwisie na swoim koncie edytuje sobie te pytania a widget sam je pobiera ode mnie. Jak właśnie do takiego mechanizmu podejść?

11 req/s to naprawdę nie dużo. Serwer dedykowany za 170 zł/miesiąc + nginx dawał mi bez specjalnej optymalizacji 60 req/s (bez kontaktu z bazą danych).

Polecam lekturę tego wpisu:
http://www.igvita.com/2008/02/11/nginx-and-memcached-a...

Widget będzie generowany tylko wtedy kiedy pytania się zmienią, a pozostały czas i tak będzie pobierany z cache'a, więc 100 req/s nie będzie problemem.Robert Boguszewski edytował(a) ten post dnia 24.11.09 o godzinie 22:29

konto usunięte

Temat: Widget i zużycie serwera

11 req/s to naprawdę nie dużo. Serwer dedykowany za 170 zł/miesiąc + nginx dawał mi bez specjalnej optymalizacji 60 req/s (bez kontaktu z bazą danych).

A nie wiesz jak takie wyniki miałyby się do serwera Apache?

konto usunięte

Temat: Widget i zużycie serwera

Piotr Parzentny:

A nie wiesz jak takie wyniki miałyby się do serwera Apache?

Ogólnie Apache jest jednym z "najcięższych" i co za tym idzie najwolniejszych serwerów www, głównie przez ilość modułów które ma w siebie wbudowane.

Co do pytania to wystarczy poszukać ;)
http://www.google.pl/search?q=nginx+benchmark

Od siebie polecałbym przyjrzeć się bardzo obiecującemu projektowi Cherokee Web Server.
Robert B.

Robert B. Web Development
Manager

Temat: Widget i zużycie serwera

Piotr Parzentny:
11 req/s to naprawdę nie dużo. Serwer dedykowany za 170 zł/miesiąc + nginx dawał mi bez specjalnej optymalizacji 60 req/s (bez kontaktu z bazą danych).

A nie wiesz jak takie wyniki miałyby się do serwera Apache?
Niestety, ale nawet nie przyszło mi do głowy, żeby do strony o dużym ruchu stosować Apache :-)

konto usunięte

Temat: Widget i zużycie serwera

Robert Boguszewski:
Piotr Parzentny:
11 req/s to naprawdę nie dużo. Serwer dedykowany za 170 zł/miesiąc + nginx dawał mi bez specjalnej optymalizacji 60 req/s (bez kontaktu z bazą danych).

A nie wiesz jak takie wyniki miałyby się do serwera Apache?
Niestety, ale nawet nie przyszło mi do głowy, żeby do strony o dużym ruchu stosować Apache :-)

Chyba tutaj raczej chodzi o serwowanie jednego pliku niż strony.
Można spróbować z lighttpd.
Z tego co mi wiadomo, pierwsza, najprostsza rzecz jaką się robi w wypadku serwowania cięższych stron to rozdziela się content statyczny od dynamicznego na różne serwery.

Następna dyskusja:

POTRZEBUJESZ TANIEGO SERWER...




Wyślij zaproszenie do