Jakiego rodzaju serwera potrzebuję do obsługi 10 milionów żądań i zapytań mySQL dziennie? [Zamknięte]

23

Jestem początkującym administratorem serwerów i szukam potężnej usługi hostingowej do hostowania mojej nowej witryny. Ta strona jest w zasadzie zapleczem mobilnej gry online i będzie:

  • obsługiwać do 10 milionów żądań HTTPS i zapytań mySQL dziennie
  • przechowuj do 2000 GB pliku na dysku twardym
  • przesyłaj prawdopodobnie 5000 GB danych na miesiąc
  • działa na PHP i mySQL
  • ma 10 milionów rekordów w bazie danych mySQL, na każdy rekord przypada 5-10 pól, po około 100 bajtów

Naprawdę nie wiem, jakiego rodzaju serwera potrzebuję, aby sprostać tym wymaganiom, moje pytanie brzmi:

  1. Jakiego procesora / pamięci RAM potrzebuję na dedykowany serwer lub VPS?
  2. Jakie firmy hostingowe są w stanie zaoferować tego rodzaju serwer dedykowany lub VPS?
  3. Co z przetwarzaniem w chmurze? Badałem Amazon EC2, ale wydaje mi się to skomplikowane. Skontaktowałem się z Rackspace, ale dziwnie powiedzieli, że Cloudsites nie jest odpowiedni dla moich wymagań. Zastanawiam się, czy istnieje inna firma hostingowa w chmurze.
  4. Jakaś inna metoda alternatywna?
Calvin
źródło
poradziliśmy sobie z tym z 2 serwerami Linux z 8 gigami pamięci RAM, mysql jest klastrem mysql, a DB jest szybko przechowywane w pamięci, procesor nigdy nie jest tak naprawdę duży, jeśli używasz dobrej dystrybucji, a dysk będzie musiał tylko zostać użyty wykonywanie cogodzinnych migawek zapewnia redundancję w przypadku awarii. możesz też chcieć mieć zainstalowany mysqltuner, abyś mógł mieć kontrolę nad indeksami itp. i jak najlepiej wykorzystać wszystko, a także dodać wiele indeksów i rejestrować powolne zapytania, ponieważ dla sieci może to być naprawdę tanie, po prostu dodaj obciążenie
stabilizator
Dlaczego nie skorzystać z usługi w chmurze? Azure, Amazon, RackSpace, GoGrid, Heroku?
bbqchickenrobot

Odpowiedzi:

33

Tani komputer stacjonarny?

Przejdźmy do matematyki.

  • 10 milionów wniosków.
  • To rozkłada się na 416667 żądań na godzinę.
  • To rozkłada się na 6944 żądań na minutę.
  • To rozkłada się na 116 żądań na sekundę.

Podwój to (obciążenie szczytowe), a mówimy o obciążeniu, które może poradzić sobie tani czterordzeniowy komputer stacjonarny, JEŻELI zapytania są wystarczająco proste i nie mówisz tak naprawdę, jak są złożone.

  • 5000 GB miesięcznie jest banalne - poważnie, ta sama matematyka obowiązuje.
  • To rozkłada się do 208 GB / dzień
  • To rozkłada się do 8 GB / godzinę
  • To rozkłada się do 148 MB / minutę
  • To rozkłada się do 2,5 MB / sekundę, 25 Mb. Podwójny za szczyt - 50 Mb, trywialny dla każdego centrum hostingowego. Będzie cię to jednak kosztowało.

  • Przechowuj 2000 GB na dysku twardym. Czy to dyski twarde 2x2000 GB w macierzy RAID? Chyba że: dotyczy to bazy danych, ma wiele skomplikowanych operacji we / wy, to jest coś między kilkoma płytami a LOTem o pojemności 73 GB 15 000 obr./min SAS w RAID 10 (około 60 płyt), aby uzyskać potrzebne operacje we / wy - to pytanie nie jest możliwe bez DUŻO więcej informacji na temat wzorców dostępu do danych.

  • Działa z PHP i MySQL - Mój telefon komórkowy może to zrobić;) Pytanie brzmi, jak złożona jest aplikacja. MySQL MOŻE lub NIE MOŻE być akceptowalnym rozwiązaniem tutaj, BTW l. - wymagałoby to więcej testów. Jest powód, dla którego niektórzy ludzie nadal korzystają z innych większych komercyjnych baz danych.

  • Jakiego procesora / pamięci RAM potrzebuję do serwera dedykowanego lub VPS?

Można powiedzieć, że zależy to od logiki (ile obliczeń w części PHP, inteligencji lub braku programistów i wielu innych pytań.

Poważnie, to nie jest banalna konfiguracja. Poproś o to niektórych specjalistów.

Zasadniczo musisz zejść na dół i wykonać zadanie domowe. Na wiele pytań nie można odpowiedzieć w tej formie. Zwłaszcza, że ​​wydaje się, że nie obchodzą Cię twoje dane ...

  • Kopie zapasowe?
  • Brak planu awaryjnego? Mam na myśli, że serwery giną - więc nie masz nic przeciwko, że witryna jest nieczynna przez kilka dni, a konfiguracja wymiany jest skonfigurowana?
TomTom
źródło
dzięki za odpowiedź. php jest proste, myślę, że głównym obciążeniem jest mySQL, przetestowałem niektóre zapytania mySQL na moim laptopie (Core2 Duo) z WAMP na Windowsie. z 10 milionami rekordów w mySQL, średnio każde zapytanie kosztuje 0,1 sekundy. o ile silniejszy jest Quad Core w obsłudze zapytań mySQL?
Calvin
2
Zapomnij o rdzeniu quada. Twój laptop SUCKS w IO - i IO to miejsce, w którym bazy danych nie są ograniczone. Masz JEDEN dysk twardy, czyli SLOW i ROBUST (latop). Serwery używają WIELU dysków twardych, które są SZYBKIE (ale nie solidne). Używam czterordzeniowego SQL Servera z MS i potrafię obsłużyć ponad 500 partii na sekundę w prostych selekcjach (jedna partia to jedna selekcja) bez maksymalnego wykorzystania procesora - ale dostaję DUŻO aktywności dysku na podsystemie dysku, który jest prawdopodobnie ponad 30 razy szybciej niż twoje (i to nie robi jeszcze imponujących wrażeń). Dyski są limitem. Plus właściwe programowanie.
TomTom,
1
Twój ruch ssl będzie musiał być zaszyfrowany / odszyfrowany, możesz odciążyć to na balanserze i zrobić odwrotne proxy do normalnego serwera http. To powinno ograniczyć opóźnienie. można też zrobić ci szyfrowanie sprzętowe zbyt ....... en.wikipedia.org/wiki/SSL_acceleration jeśli budżet nie jest problemem do korzystania z bazy danych ramsan.com/success/ccpgames.htm
Unix Woźny
7

Aby dodać niektóre z moich doświadczeń, które mogą być pomocne:

  • Jak wspomniał TomTom, trudne / niemożliwe jest podanie dokładnych specyfikacji, ponieważ wiele z nich zależy od projektu i wdrożenia aplikacji. Sprzęt, który daje mi lub komuś innemu żądania X / s, może nie działać dobrze.
  • Mam dedykowany serwer MySQL klasy niskiej (Intel Core2 Duo E4600 2,40 GHz, 4 GB pamięci RAM) obsługujący średnio 100 żądań na sekundę (blisko 10 milionów na dzień) przy współczynniku bezczynności procesora wynoszącym 90%. Poza kilkoma podstawowymi poprawkami konfiguracji, działa dobrze ze względu na duże obciążenie odczytu (+ 95% odczytów), a aktywny zestaw rekordów łatwo mieści się w pamięci. Wybierając ilość pamięci RAM serwera, weź pod uwagę rozmiar aktywnego zestawu, ponieważ może to mieć duże znaczenie. Upewnij się, że rozumiesz różnicę między rozmiarem bazy danych a rozmiarem aktywnego zestawu rekordów. Na przykład, moje bazy danych łącznie ~ 7 GB, ale aktywny zestaw to prawdopodobnie tylko kilka 100 MB.
  • Podobnie mam serwer Apache o podobnych specyfikacjach obsługujący ~ 1 milion żądań dziennie, który ma średnio ~ 95% bezczynności procesora. Żądania są mieszanką bardzo prostych zapytań AJAX do danych mapowych i bardziej złożonych stron MediaWiki.
  • Benchmarking konkretnej aplikacji to dobry początek próby określenia dokładnie tego, czego potrzebujesz. Nie chcesz nie doceniać, ale przeszacowanie może być równie złe ze względu na potencjalną stratę pieniędzy i wysiłku.
  • Weź pod uwagę nie tylko średnią szybkość żądań, ale także szczytową. Nie chcesz serwera, który ledwo poradzi sobie ze średnią stawką, ponieważ stawki żądań mogą się znacznie różnić w ciągu dnia, tygodnia i miesiąca. Na przykład mogę uzyskać 3-4-krotnie większy ruch w godzinach szczytu w weekendy, podobnie jak w minimalnych godzinach w ciągu tygodnia. To, jak będzie się różnić, zależy od aplikacji i bazy użytkowników.
  • Czy możesz buforować dowolne z żądań bazy danych / HTTP? Może to drastycznie zwiększyć współczynnik żądań dzięki tańszemu / mniejszemu sprzętowi w zależności od tego, ile możesz buforować.
  • Zastanów się nad opcjami skalowania dla przyszłego wzrostu teraz zamiast później. Dobrą opcją może być użycie skalowania poziomego, które pozwoliłoby Ci zacząć od minimalnego sprzętu i łatwo rosnąć w miarę potrzeb.
  • Prawidłowe zaprojektowanie warstwy aplikacji może mieć ogromny wpływ na jej najwyższą wydajność. Złe zapytanie SQL w tabeli bez indeksów może być o rząd wielkości wolniejsze niż poprawnie zaprojektowane. Podobnie źle skonfigurowane serwery Apache / MySQL mogą być wielokrotnie wolniejsze niż przy prawidłowej konfiguracji.
uesp
źródło