Ile żądań powinien obsługiwać mój serwer internetowy?

39

Nie wchodzę w szczegóły dotyczące specyfikacji, ponieważ wiem, że nie ma na to prawdziwej odpowiedzi. Ale dzisiaj przeprowadzam testy obciążenia z abpoleceniem w apache.

I dotarłem do liczby 70 żądań na sekundę (1000 żądań z 100 równoczesnymi użytkownikami), na stronie ładującej się z 4 różnych tabel DB i wykonującej pewne operacje na danych. To dość ciężka strona.

Serwer nie jest na razie wykorzystywany do niczego innego, a obciążenie na nim spoczywa tylko na mnie, ponieważ jest w fazie rozwoju. Ale aplikacja będzie używana codziennie przez wielu użytkowników.

Ale czy to wystarczy? A może powinienem się nawet martwić (tak długo, jak długo przekroczy X żądań na sekundę)

Myślę, że nie powinienem się martwić, ale chciałbym kilka wskazówek na ten temat.

Lalafur Waage
źródło

Odpowiedzi:

44

70 żądań na sekundę działa z szybkością 252 000 renderów stron na godzinę.

Jeśli założysz, że średnia sesja przeglądania witryny wynosi 10 stron, możesz wesprzeć 25 000 unikalnych użytkowników na godzinę.

Prawdopodobnie powinieneś sprawdzić te liczby w stosunku do oczekiwanej liczby odwiedzających, które powinny być dostępne u ludzi po stronie biznesowej.

Wiele witryn, nad którymi pracuję, odnotowuje około 50% dziennego ruchu w okresie około 3 godzinnego szczytu każdego dnia. Jeśli tak jest w przypadku Twojej witryny (zależy to od rodzaju dostarczanych treści i odbiorców), powinieneś być w stanie wesprzeć dzienną liczbę odwiedzin wynoszącą około 150 000.

To całkiem niezłe liczby; Myślę, że powinieneś być w porządku. Mądrze jest przyjrzeć się teraz buforowaniu opcode i strojeniu bazy danych, ale pamiętaj - przedwczesna optymalizacja jest źródłem wszelkiego zła. Monitoruj witrynę, szukaj hotspotów i poczekaj, aż ruch wzrośnie, zanim wykonasz kosztowną optymalizację problemu, którego możesz nie mieć.

Tim Howland
źródło
Bardzo dobra odpowiedź, dokładnie tego, czego szukałem. Nie dokonałem żadnej optymalizacji i chciałem uzyskać numery bazowe, aby zobaczyć, gdzie w tej chwili siedzę.
Ólafur Waage
„Jeśli założysz, że średnia sesja przeglądania witryny wynosi 10 stron, możesz wesprzeć 25 000 unikalnych użytkowników na godzinę” ... przy założeniu, że każda sesja wysyła żądanie co sekundę. Jeśli użytkownik musi pomyśleć przed kolejnym kliknięciem / żądaniem - na przykład 5 sekund - będziesz w stanie obsłużyć więcej odwiedzających w sesjach równoległych.
Jochem Schulenklopper
Całkowicie zgadzam się na temat „przedwczesnej optymalizacji” z perspektywy kodu. Ale wybór wadliwego projektu jako całości jest w rzeczywistości źródłem wszelkiego zła. Nic nie może przezwyciężyć wadliwego projektu oprócz przepisania.
Jeff Fischer
5

W przeszłości używałem 2 narzędzi do monitorowania wydajności moich serwerów Apache.

Jednym z nich jest munin , który wyświetla różne rzeczy, w tym liczbę instancji apache, liczbę połączeń, dostępną pamięć, użycie procesora itp. - i pomaga mi określić, kiedy zbliżam się do strefy niebezpiecznej i dlaczego.

Drugi to po prostu strona statusu serwera Apache ( http: // twój_serwer / status serwera? Odświeżanie = 10 ), która pozwala mi zobaczyć stan każdego połączenia, a także liczbę wolnych połączeń dostępnych w danym momencie.

Brent
źródło
1

Sugeruję, abyś się martwił tylko, jeśli uważasz, że Twoja aplikacja będzie bardzo zajęta, gdy spadnie na ziemię. Czy dana strona prawdopodobnie zostanie tak mocno trafiona? Trudniej? Mniej? Jeśli nie masz pojęcia, podejrzewam, że wcześniej nie będzie to problemem. Jeśli jest to twoja najwolniejsza strona, poznasz jedno miejsce, jeśli będziesz musiał później zoptymalizować system.

Istnieje również wiele rzeczy, które możesz zrobić, aby dostroić większość serwerów internetowych i silników baz danych, aby wycisnąć większą wydajność.

akrobata
źródło
Chciałbym być przygotowany na małą liczbę żądań, na przykład bardzo szybka strona może obsłużyć około 110 żądań na sekundę. Podczas gdy serwer może obsłużyć 2900 rps na pustej stronie.
Ólafur Waage
0

W komentarzu stwierdzasz, że Twój serwer może obsłużyć 2 900 żądań na sekundę na pustej stronie. Wskazuje to dość mocno, że nie jest to sam serwer WWW - to przetwarzanie.

Jeśli używasz PHP, rozważ pamięć podręczną opcode, taką jak APC . Jeśli DB jest wąskim gardłem, memcached również ci pomoże.

ceejayoz
źródło
Nie martwię się szczególnie o liczby, jeśli wystarczy 70 rps.
Ólafur Waage
0

Po uruchomieniu witryny możesz również zajrzeć na mod_top 1, który da ci w czasie rzeczywistym podgląd aktualnego obciążenia Apache. Nie zainstalowałem go sam, ale z pewnością wydaje się, że ma więcej informacji i lepszy rozkład obciążenia niż standardowy status serwera Apache.


źródło