Serwer wirtualny dla dużego serwisu

dodany 23.05.2010 przez unknow [ Komentarzy (6) ]

Tagi: ,

SerwerNajczęstszym rozwiązaniem stosowanym przy hostowaniu własnych stron internetowych są serwery wirtualne. Nazwa brzmi dość dumnie, jednak w praktyce dostajemy zwykłe konto w firmie hostingowej do którego możemy podpiąć pewną ilość serwisów (ograniczoną parametrami konta).

Na pierwszy rzut oka wszystko wygląda świetnie. Mamy jeden serwer wirtualny i płacimy za niego od kilkudziesięciu do kilkuset złotych rocznie, a na nim hostujemy wiele serwisów. Każdy z hostingów kusi nas niezwykle wyśrubowanymi parametrami typu 10GB pojemności.

Myśląc logicznie, mógłbyś stwierdzić, że jeśli kod źródłowy UW-Team.org zajmuje około 5MB, to na koncie mającym 10GB pojemności mógłbym postawić około 2048 takich serwisów. W tym momencie muszę Ci powiedzieć jak bardzo się mylisz.

Tak naprawdę ograniczają Cię dwa dodatkowe parametry. Transfer, oraz obciążenie procesora. O ile pierwszy z nich podany jest w ofercie, o tyle drugi wykle ukryty jest w którymś z punktów regulaminu firmy hostingowej.

Transfer – jak jest liczony i ile to jest “dużo”?

Zajmijmy się jednak transferem. Załóżmy, że jesteś szczęśliwym posiadaczem serwera wirtualnego mającego ogromną pojemność (dla nas nieważną) i 600GB transferu rocznie. W większości przypadków będziesz miał do czynienia z sytuacją gdy transfer wcale nie będzie rozliczany rocznie, lecz miesięcznie. Oznacza to, że gdy np. niemożliwe jest, abyś w styczniu zużył 300GB transferu, a resztę limitu wykorzystał w pozostałe miesiące. Transfer po prostu dzielony jest na miesiące, więc na jeden miesiąc przypada Ci limit 50GB.

Czy wspomniane 50GB to dużo? Musisz obliczyć, ile zajmuje średnio jedna odsłona Twojego serwisu. Załóżmy, że jesteś mną i Twoim serwisem jest UW-Team.org. W chwili pisania tego artykułu, strona główna UW-Team.org wraz ze wszystkimi grafikami zajmuje 110KB. Jest to dość mały rozmiar jak na serwis tego typu.

Jak widzisz, jedno wejście użytkownika na stronę główną (zakładam, że nie kliknie on w żadnego linka) pomniejszy mój limit transferu o 110 kilobajtów. Podziel teraz wspomniane 50GB na 110KB, a otrzymasz wartość około 480 tysięcy. Jest to ilość osób jaka może w ciągu miesiąca odwiedzić stronę główną Twojego serwisu. Załóżmy jednak, że strona którą hostujesz jest ciekawa i ludzie wcale nie uciekają z niej po zobaczeniu zaledwie strony głównej.

Możemy więc przyjąć do obliczeń, że jeden użytkownik pobierze około 500KB plików z Twojego serwera. W tym momencie liczba możliwych do obsłużenia użytkowników miesięcznych spadnie do około 105 tysięcy. Taka ilość podzielona na liczbę dni w miesiącu oznacza, że dysponując takim transferem, dziennie możesz przyjąć maksymalnie 3,5 tysiąca użytkowników.

Sytuacje wyjątkowe

Jeśli posiadasz ciekawego bloga, lub tematyczny serwis internetowy, to od czasu do czasu zdarzają się skoki oglądalności Twojej strony internetowej. Mogą one być spowodowane np. tym, że ktoś wrzucił linka do Twojej strony na poczytne forum, lub serwis dostał się na główną stronę wykop.pl.

Przeanalizujmy drugą z sytuacji. Zakładając, że przeciętna ilość wejść na linka na stronie głównej wykopu to około 20 tysięcy (dane z licznika na serwisie pokazywarka.pl, z którego linkowanych jest wiele materiałów na wykopie).

Jeden dzień przebywania na stronie głównej wykopu kosztował Cię będzie około 9,7GB transferu (20 tysięcy razy 500KB). Stanowi to niemal 20% Twojego limitu transferu.

Czyli 50GB miesięcznie to nie tak mało – jest jednak pewne ale…

Jak wspomniałem na początku wpisu, istnieje jeszcze jeden parametr poza pojemnością konta i transferem, który może przykrócić życie Twojego serwisu. Jest to generowane przez niego obciążenie serwera.

O ile Twoja statyczna strona napisana w czystym HTML nie generuje ogromnego obciążenia, o tyle kombajny jakimi są współczesne CMSy pisane w PHP i MySQL, potrafią już skutecznie zabić każdy serwer.

Zakładając, że dziennie odwiedzi Cię 20 tysięcy osób, przy równomiernym rozkładzie (co zdarza się niezmiernie rzadko) daje to 833 osoby na godzinę, czyli około 14 wejść na minutę.

Co tak naprawdę generuje obciążenie serwera?

Tutaj winowajców mamy kilku – wymieniając ich kolejno według ciężkości przewinień, będą to:

  • nieoptymalne zapytania do bazy danych
  • zbyt wiele odwołań do plików w ramach jednego serwisu
  • niepoprawnie napisane skrypty PHP (np. zapętlające się)
  • liczne operacje dyskowe (szczególnie zapis danych do plików)

Ciekawostką może być tutaj punkt drugi, którego istnienie nie wszyscy biorą pod uwagę. Czy zastanawiałeś się kiedyś, ile zapytań wysyła do serwera czytelnik Twojej strony? Jak to sprawdzić? wystarczy policzyć ilość zaciąganych elementów podczas przeładowania jednej ze stron Twojego serwisu.

W przypadku UW-Team.org, otworzenie jednej podstrony to około 20 zapytań (zmierzone za pomocą modułu “sieć” w pluginie Firebug dla Firefoxa). Te zaledwie 20 zapytań dla jednego usera, przy 14 wejściach na minutę przeradza się w 280 requestów na minutę, czyli prawie 5 zapytań na sekundę.

Przy takiej ilości odwołań do plików, możesz być niemal pewien, że zwrócisz na siebie uwagę administratora swojego hostingu. Prawdopodobnie otrzymasz ostrzeżenie w sprawie przeciążania serwera, co przy występowaniu takiego efekty przez np. 3-4 dni może zakończyć się koniecznością zmiany dostawcy usług.

Pamiętaj, że do ilości odwołań do plików należy doliczyć jeszcze wszelkiego rodzaju zapytania do MySQL, których przykładowo wordpress wykonuje do kilkunastu na jedną odsłonę.

Co to wszystko oznacza?

Serwery wirtualne idealnie nadają się do hostowania stron domowych, firmowych i innych, które nie mają tendencji do generowania nadmiernego ruchu. Niestety jeśli właśnie wpadł Ci do głowy genialny pomysł na stworzenie serwisu, który stanie się internetowym hitem i zdobędzie sukces w kilka dni, to muszę Cię zmartwić – serwer wirtualny tego nie wytrzyma.

Jakie są inne rozwiązania?

Projektując profesjonalny, często odwiedzany  serwis Internetowy, musisz wziąć pod uwagę zarówno obciążenie bazy danych jakie może on generować, jak i potencjalne obciążenie całego serwera, które może być spowodowane ilością zapytań lub złożonością skryptów PHP.

Chcąc uniezależnić się od firm hostingowych, powinieneś zainteresować się kupnem własnego serwera dedykowanego, lub przynajmniej jego wirtualnego odpowiednika, czyli serwera VPS. W tym drugim przypadku uważnie przeczytaj jednak regulamin, który także może zakładać, że nie wolno Ci pracować przez dłuższy czas na obciążeniu bliskim 100% mocy procesora.

Jeśli o VPS’ach mowa, to tutaj pojemności dysków nie są zwykle tak zawrotne jak w przypadku serwerów wirtualnych, gdzie stosuje się overselling. Jednak już sam transfer miesięczny liczony jest często w setkach gigabajtów, czy nawet terabajtów. Przykładowo mój serwer VPS który wykorzystuje do prywatnych projektów ma limit transferu 2TB na miesiąc (czyli 2048GB miesięcznie).

O serwerach VPS dowiesz się więcej czytając artykuł na ten temat, na innym moim blogu.


6 komentarzy do “Serwer wirtualny dla dużego serwisu”

  1. Sim00n napisał:

    Kolejny dobry artykuł. Niestety w dzisiejszych czasach trudno jest o stronę, która spełnia w 100% wszystkie punkty, które wymieniłeś. Myślę, że większością są tutaj młodzi programiści (15-18 lat, do których się zresztą zaliczam) którzy zaczynają przygodę z językiem i cieszą się, że coś działa tak jak sobie to zaplanowali nie myśląc o takich sprawach jak właśnie transfer lub obciążenie procesora. Osobiście w moich skryptach staram się zadbać o to, ale podczas procesu nauki, jest nam wpajane do głów, że im czytelniej i mniej kodu do wykonania tym lepiej. Zastanawiam się teraz co jest lepsze i jestem właściwie bardzo nie pewny bo mianowicie:
    Stronę można napisać na kilku plikach które wykonują tylko swoje zadanie jak np. różnego rodzaju fora, przykład: view_topic.php, shoutbox.php etc.
    Jest też opcja zrobienie jednego index’u i includowania do niego plików zawierających kod do odpowiedniego działania jak postowanie, shoutbox etc. sprawdzając przy tym przez polecenia warunkowe jaki GET jest aktualnie ustawiony.

    Chciałbym również poznać twoje zdanie, lub przeczytać artykuł o systemach szablonów jak np. smarty i jeżeli ich używasz to jaki według Ciebie jest najlepszy.

    Pozdrawiam, Sim00n.

  2. Stefano napisał:

    cytat: “Stronę można napisać na kilku plikach które wykonują tylko swoje zadanie jak np. różnego rodzaju fora, przykład: view_topic.php, shoutbox.php etc.”
    no to warto pomyslec o pisaniu OOP w klassach z autoload’em, na dodatek gdy twoje klasy staja sie uniwersalne to mozes je wykorzystac w innych projektach i to z tego samego pliku.

    ja np pisalem kilka biblotek klass ktore ustatyczniaja dany content i badaja potem na zmiany, tutaj stosuje to samo co przegladarki z serwerami robia, ETAG, gdy w CMS jest zrobiona zmiana to wszytko podlegajace pod danym plikiem ktory pod koniec bedzei static bedzie uaktualnione, lepiej to robic raz a potem miec spokoj ;)
    to ja woel wygenerowac 1 troche % na procku niz moje wizytorzy ;)

  3. ZajOnDz napisał:

    Wiesz co… Znam tą stronę od bardzo dawna… już ładnych parę latek, gdy to wielce starałem, się bawić w hax00ra i znalazłem hackme ;p
    Od tamtej pory zaglądam tu czasami i zawsze jak wejdę to nie zamykam tej strony przez bardzo długi czas… :p

    Unknow jesteś zajebisty :D Nienawidzę czytać, ale Twoje teksty studiuję od A do Z… :D

    Pozdrawiam :)

  4. matylda napisał:

    wreszcie trafiłam na to, czego szukałam, dobry tekst, który nawet mnie laikowi planującemu biznes wiele rozjaśnił, wiem przynajmniej o co pytać, jakich informacji potrzebuję, dziękuję
    pozdrawiam

  5. chmurka napisał:

    W cloud2b zamiast hostingu oferowana jest usługa kolokacji, czyli hotelingu, co oznacza, że serwer jest przechowywany w firmie, a odpowiedni pracownicy (Klient decyduje kto, to będzie) sprawują opiekę nad tym, by był odpowiednio klimatyzowany. Serwer jest także odpowiednio chroniony przed awarią, a w razie gdyby jednak doszło do takiej sytuacji, to także nie ma niebezpieczeństwa utraty danych. Jak natomiast chodzi o miesięczną opłatę, to płaci się tylko za to, co rzeczywiście się wykorzysta.

  6. serwer internetowy napisał:

    Jeżeli chodzi o obciążenie serwera to co opisałeś jest tylko wierzchołkiem góry lodowej. Oprócz tego o czym już wspomniałeś winę za wysokie obciążenia ponoszą także spamboty, ataki na serwer jak np. ddos, zła konfiguracja serwera www, baz danych. Niestety ale jak zauważyłem w niektórych z polskich hostingodawców, to mają oni dość spory problem z tym. Wracając do tematu to osobiście uważam, że na bardzo rozbudowane i popularne serwisy nadają się jedynie serwery dedykowane, prawidłowe ich zabezpieczenie i konfiguracja.

Dodaj komentarz