Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Dokupienie dodatkowej przepustowości serwera?
Forum PHP.pl > Forum > Przedszkole
Gość
Wyjaśnię na przykładowej stronie o co mi chodzi.
Jest przykładowo strona o piłkarskiej Lidze Mistrzów (strona jest na serwerze dedykowanym, przepustowość 100 Mbit, transfer miesięczny 5000 GB).
Strona chodzi bardzo dobrze z wyjątkiem środy, w godzinach 21-23 (czyli pory w której odbywają się mecze). Wtedy radykalnie wzrasta ilość użytkowników, którzy odwiedzają stronę, serwer nie wytrzymuje takiego ruchu i strona przestaje działać.

1. Jaki parametr za to odpowiada? Chyba przepustowość łącza? (dodam, że transfer miesięczny 5000 GB nie jest wykorzystywany nawet w połowie, więc to raczej nie kwestia transferu miesięcznego)
2. Jeżeli to przepustowość, to czy da się dokupić na te 2 godziny dodatkową przepustowość? Powiedzmy jak normalnie serwer ma przepustowość 100 Mbps, to na 2 godziny dokupuję dodatkowe 300 Mbps. Tylko czy firmy hostingowe na takie coś się zgodzą? Czy jest to w ogóle możliwe?
thek
Normalne hostingi, z tego co widziałem, nie posiadają takowej opcji. Chmurowe są bardziej elastyczne i można już kombinować.
Gość
A czy da się w ogóle monitorować ile w danej chwili serwer zużywa przepustowości?
skleps
Cytat(Gość @ 25.11.2012, 13:29:36 ) *
Wtedy radykalnie wzrasta ilość użytkowników, którzy odwiedzają stronę, serwer nie wytrzymuje takiego ruchu i strona przestaje działać.


A masz jakieś monitorowanie serwera? Podgląd do konfiguracji?
Równie dobrze może być tylu userów, że np.
- kończy się RAM
- powstaje maksymalna liczba procesów apache (czy co tak jest) i więcej osób na raz się nie podłączy, bo nie powstanie więcej procesów apache...
Ponieważ piszesz że to dedyk, to czy jest jakiś monitor serwera zainstalowany, chociażby np. munin?

Tak więc wpierw zacznij szukać przyczyn w serwerze, dopiero jak będziesz pewny ze to OK, to szukaj przepustowości...
Gość
Cytat(Gość @ 25.11.2012, 13:29:36 ) *
2. Jeżeli to przepustowość, to czy da się dokupić na te 2 godziny dodatkową przepustowość? Powiedzmy jak normalnie serwer ma przepustowość 100 Mbps, to na 2 godziny dokupuję dodatkowe 300 Mbps. Tylko czy firmy hostingowe na takie coś się zgodzą? Czy jest to w ogóle możliwe?


Piszesz, że masz przepustowość 100 Mbps i chcesz dowiedzieć się ile ile w danej chwili wykorzystywanej jest przepustowości.

A ja zastanawiam się czy da się jakoś to policzyć?

Powiedzmy, że mamy:
- w jednej sekundzie 1000 użytkowników
- storna/podstrona średnio waży 100 KB = 800 kb
Czyli w trakcie jednej sekundy generowany jest ruch:
1000 użytkowników * 800 kb = 800000 kbps = 800 Mbps

czyli 8 razy większy ruch niż oferowana przez serwer przepustowość 100 Mbps.

Czy w takiej sytuacji (przekroczona maksymalna przepustowość) strona przestanie działać?
Czy te moje obliczenia są w ogóle prawidłowe?
skleps
Cytat(Gość @ 26.11.2012, 19:40:05 ) *
A ja zastanawiam się czy da się jakoś to policzyć?
Powiedzmy, że mamy:
- w jednej sekundzie 1000 użytkowników


rok temu miałem tego typu problem i przepustowość nie miała nic do rzeczy.
Za mało ramu + czekanie na odpowiedź z bazy (a tym samym procesy apacha czekały i dla nowych userów powstawały nowe).

Sprawę rozwiązało przekonfigurowanie apache + zoptymalizowanie zapytań + cacheowanie części rzeczy, żeby bazę odciążyć.
Gość
Cytat(skleps @ 26.11.2012, 19:55:46 ) *
rok temu miałem tego typu problem i przepustowość nie miała nic do rzeczy.
Za mało ramu + czekanie na odpowiedź z bazy (a tym samym procesy apacha czekały i dla nowych userów powstawały nowe).


Obecnie mam serwer dzielony (wirtualny). Strona ma zwykle 150 userów na raz. Ale jak jest duże natężenie, to w pewnych momentach sięga 4000 userów na raz. Chciałbym więc kupić serwer dedykowany. Pytanie, czy serwer z takimi parametrami jak poniżej wystarczy na te 4000 userów na raz?
Cytat
Procesor Intel Xeon E3-1230 (3.20GHz/4-core/8MB)
Pamięć RAM 8 GB RAM
Dyski twarde 2x500 GB SATA RAID 1/0
Łącze upload/download 100 Mbps
Transfer miesięczny Transfer no limit, po przekroczeniu 5000 GB w miesiącu przycinamy do 10 Mbps


Cytat(skleps @ 26.11.2012, 19:55:46 ) *
Sprawę rozwiązało przekonfigurowanie apache + zoptymalizowanie zapytań + cacheowanie części rzeczy, żeby bazę odciążyć.


A czy można/warto cachować np. stronę główną?

Zastanawiam się czy nie warto by było wziąć serwera dedykowanego z dyskami SSD, bo są one bardzo szybkie, więc czy nie wpłynęło by to pozytywnie na ogólną wydajność serwa (chociażby szybszy czas wykonania zapytań do relacyjnej bazy danych)?
skleps
Cytat(Gość @ 26.11.2012, 21:41:19 ) *
A czy można/warto cachować np. stronę główną?


Cacheować warto wszystko, co nie jest ciągle zmienne smile.gif
Zawsze możesz to co jakiś czas (1minuta/1godzina/1dzień) automagicznie odświeżać...


Jeśłi teraz masz wirtuala, to może skontaktuj się z administratorami - powinni podać ci gdzie jest wąskie gardło obecnego rozwiązania...
Gość
Cytat(skleps @ 27.11.2012, 17:57:57 ) *
Cacheować warto wszystko, co nie jest ciągle zmienne smile.gif
Zawsze możesz to co jakiś czas (1minuta/1godzina/1dzień) automagicznie odświeżać...



Ciekawe jak to jest cacheowaniem w kontekście wyjątkowo dużego ruchu na stronie.
Od czasu do czasu słyszy się, że serwery jakiejś znanej strony padły z powodu wyjątkowo dużej odpowiedzialności strony:
http://aplikacje.komorkomania.pl/2012/11/0...oru-ciekawskich

No skoro nawet serwery na których jest strona NASA padły, to już chyba po prostu przerasta to możliwości nawet najsilniejszych serwerów na rynku?
I co wtedy zrobić? Czy cacheowanie pomogło by uniknąć braku działania strony z powodu wyjątkowego dużego ruchu?
Gość
Cytat(skleps @ 27.11.2012, 17:57:57 ) *
Zawsze możesz to co jakiś czas (1minuta/1godzina/1dzień) automagicznie odświeżać...


Automagicznie, to znaczy w jaki sposób? Bo mi przychodzi jedynie do głowy, żeby robić zmiany na localhości co jakiś czas i wrzucać na serwer?
skleps
Mam nieodparte wrażenie, że nie do końca wiesz o czym piszę.

Poczytaj o tym, np:
http://forum.nospor.pl/programowanie/php/c...hodzi-ft27.html
viking
Weź tylko pod uwagę że serwer dedykowany to nie zabawka którą w kilka chwil zainstalujesz i samo zadziała. Wymaga ciągłego monitoringu, zabezpieczenia, może się okazać że np zaczniesz słać spam i serwerownia cię odetnie. A skoro nawet nie bardzo wiesz co to cache dobrze było by na początek zlecić komuś jej przejrzenie i optymalizację kodu.
Gość
Cytat(skleps @ 28.11.2012, 14:39:18 ) *


Dzięki za linki.

Na podanej stronie jest napisane:
"Generalnie cache służy do przyspieszenia generowania strony oraz do zmniejszenia obciążenia systemu."

Stąd miałbym pytanie. Powiedzmy, że na jakiejś stronie www jest bardzo duży ruch i w wyniku przeciążenia serwera strona ta przestaje działać.
Czy gdyby na tej stronie wiele rzeczy było cacheowanych (np. odwołania do plików tekstowych, czy relacyjnej bazy danych), to strona ta dzięki temu miała by dużo większe szans działać (mimo ogromnego ruchu), bo obciążenie serwera byłoby znacznie mniejsze (właśnie dzięki temu cacheowaniu)?
Dobrze rozumiem?
skleps
Cytat(Gość @ 28.11.2012, 23:33:23 ) *
Na podanej stronie jest napisane:
"Generalnie cache służy do przyspieszenia generowania strony oraz do zmniejszenia obciążenia systemu."

Stąd miałbym pytanie. Powiedzmy, że na jakiejś stronie www jest bardzo duży ruch i w wyniku przeciążenia serwera strona ta przestaje działać.
Czy gdyby na tej stronie wiele rzeczy było cacheowanych (np. odwołania do plików tekstowych, czy relacyjnej bazy danych), to strona ta dzięki temu miała by dużo większe szans działać (mimo ogromnego ruchu), bo obciążenie serwera byłoby znacznie mniejsze (właśnie dzięki temu cacheowaniu)?
Dobrze rozumiem?


Mniej więcej tak.

Ostro trywializuję poniżej, więc proszę forumowiczów: nie lać i nie wymądrzać się na temat poniższego.

Jak działa strona niecachowana:
Skrypt leci po kolei po poleceniach, a tam gdzie napotka zapytania sql to zadaje pytania bazie i czeka na jej odpowiedz.
Jak dostanie odpowiedź z bazy, to musi ją obrobić w jakąś wizualną formę i wysłać jako kod HTML
Jeśli zapytań na stronie/skrypcie będzie np. 20 to zabawę z odpytywaniem bazy, czekaniem na odpowiedź i obrabianiem odpowiedzi skrypt musi zrobić 20x.
To trwa, blokuje połączenia serwera www, angażuje bazę danych, zużywa czas procesora i RAM.
Jeśli internautów wchodzących na daną stronę w sekundzie będzie 100, to trzeba sobie powyższe przemnożyć (zużycie RAMu i procesora też).

Ale jeśli tychże 100 internautów i tak ma dostać to samo, to po co 100x łączyć się z bazą i czekać na odpwoiedzi?
I tutaj wkracza właśnie cache - stronę lub jej fragmenty można przechowywać jako pliki cache, a nie generować za każdym razem.
Wystarczy w skrypcie zawrzeć, żeby sprawdzał czy jest plik cache i jest ważny w czasie - wtedy przy pierwszym internaucie trzeba zrobić procedurę jak powyżej, z tym ze wyniki zapisujemy sobie do pliku cache.
Ale przy pozostałych 99 już nie trzeba angażować bazy danych, tylko wysłać im gotowe, przygotowane w plikach cache dane - oszczędność zasobów serwera kolosalna, a tym samym można obsłużyć więcej internautów.

Oczywiście wszystko zależy od typu serwisu i zmienności danych, ale użycie cache pozwala całkiem sporo zwiększyć "wytrzymałość" serwera.

Z porad praktycznych:
1. nie trzeba cacheować całych stron, można przechowywać w cache ich części, niezmienne elementy (np. boksy z newsami)
2. ważność czasowa oznacza, że dany plik cache (czyli strona lub jej elementy) jest ważny przez określony czas, a później zostaje odświeżony na podstawie odpowiedzi z bazy.

Nijak nie uciekniemy od tego, ze serwer www musi obsłużyć zapytanie internauty, ale co innego gdy do wysłania gotowej strony www będzie potrzebny tylko serwer www + pliki cache,
a co innego gdy będzie potrzebny serwer www + serwer bazy danych + cała zabawa w obróbkę danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.