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?

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?

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.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.