Jaka jest „średnia” liczba żądań na sekundę dla produkcyjnej aplikacji internetowej?


120

Nie mam żadnego punktu odniesienia, jeśli chodzi o to, co jest uważane za „szybkie”; Zawsze się nad tym zastanawiałem, ale nigdy nie znalazłem prostej odpowiedzi ...


9
Nie ma prostej odpowiedzi. Szybkość to termin względny, a odpowiedź w dużej mierze zależy od kontekstu i zastosowania.
Dave L.,

Odpowiedzi:


105

Wydaje się, że OpenStreetMap ma 10-20 na sekundę

Wikipedia wydaje się mieć od 30000 do 70000 na sekundę na 300 serwerach (od 100 do 200 żądań na sekundę na maszynę, z których większość to pamięci podręczne)

Geograph otrzymuje 7000 obrazów tygodniowo (1 przesyłanie na 95 sekund)


6
Wow, to jest dość powolne jak na wikipedię
Joseph Persie

8
@JosephPersie Nie zapomnij spojrzeć na datę publikacji, hehe.
Spectral

Nadal pokazuje mniej niż 200 000 / s - nowa strona monitorowania to grafana.wikimedia.org
OJW

ciekawe, właśnie testowałem przesyłanie strumieniowe na elementach internetowych z rekordami na sekundę w porównaniu z żądaniami na sekundę. Myślę, że żądania na sekundę są w tym samym polu (od 100 do 200), ale przy przesyłaniu strumieniowym wystrzeliwuje do 1140 rekordów / sekundę (robi ndjson). W każdym razie pomyślałem, że udostępnię więcej numerów. (nie jestem pewien, czy to się zmieni, ponieważ zostało przetestowane, przesyłane strumieniowo przez 2 mikrousługi do bazy danych w pamięci ... nadal musimy przetestować z live DB. DB może być naszym wąskim gardłem i sprowadzić nas z powrotem, chyba że przełączymy się na nosql).
Dean Hiller

50

Nie jestem pewien, czy ktoś jest nadal zainteresowany, ale ta informacja została opublikowana na Twitterze (i tutaj ):

Statystyki

  • Ponad 350 000 użytkowników. Rzeczywiste liczby są jak zwykle bardzo super tajne.
  • 600 żądań na sekundę.
  • Średnio 200-300 połączeń na sekundę. Wzrost do 800 połączeń na sekundę.
  • MySQL obsługiwał 2400 żądań na sekundę.
  • 180 instancji Rails. Używa Mongrel jako serwera „sieciowego”.
  • 1 serwer MySQL (jeden duży 8-rdzeniowy box) i 1 slave. Slave jest tylko do odczytu w celach statystycznych i raportowania.
  • Ponad 30 procesów obsługi dorywczych zadań.
  • 8 Sun X4100s.
  • Przetwarzaj żądanie w Railsach w 200 milisekund.
  • Średni czas spędzony w bazie danych to 50-100 milisekund.
  • Ponad 16 GB pamięci memcached.

2
O krok bliżej źródeł na wypadek, gdyby post na blogu spadł: highscalability.com/blog/2009/6/27/…
Chinoto Vokro

@ChinotoVokro Dodałem również swój link do odpowiedzi. Dzięki!
Peter K.

1
@user :-D Tak, to jest teraz prawie historyczne. Jednak wtedy była to dla mnie użyteczna odpowiedź! :-)
Peter K.

13

Kiedy przechodzę do panelu sterowania mojego hosta internetowego, otwieram phpMyAdmin i klikam „Pokaż informacje o środowisku wykonawczym MySQL”, otrzymuję:

Ten serwer MySQL działa od 53 dni, 15 godzin, 28 minut i 53 sekund. Zaczęło się 24 października 2008 o godzinie 04:03.

Statystyki zapytań: od momentu uruchomienia do serwera wysłano 3 444 378 344 zapytań.

Łącznie 3444 M
na godzinę 2,68 M
na minutę 44,59 k
na sekundę 743,13

To średnio 743 zapytań mySQL na sekundę przez ostatnie 53 dni!

Nie wiem jak ty, ale dla mnie to szybko! Bardzo szybki!!


Niepewny. W tym czasie byłem w IXWebhosting i używali 32-bitowego systemu operacyjnego Windows na swoich serwerach współdzielonych. Podejrzewam, że ich serwer bazy danych mySQL był oddzielną, dedykowaną maszyną, ale nie wiem na pewno.
lkessler

3
Założę się, że ta liczba jest sumą wszystkich trafień na ten konkretny serwer MySQL, a nie tylko do Twojej instancji - chociaż mogę się mylić
warren

@Warren: Tak, zakładałem, że to cały serwer. Ale wiedząc, na czym polega przetwarzanie jednego zapytania SQL, obsługa tak wielu KAŻDEJ sekundy jest imponująca ... i to tylko średnie, a nie maksymalne obciążenie.
lkessler

11

Osobiście podoba mi się zarówno analiza wykonywana za każdym razem ... żądania / sekundę i średni czas / prośba, a poza tym uwielbiam widzieć maksymalny czas żądania. Jeśli masz 61 żądań na sekundę, łatwo jest to zmienić, możesz po prostu zmienić ustawienie na 1000 ms / 61 żądań.

Aby odpowiedzieć na twoje pytanie, sami przeprowadziliśmy ogromny test obciążenia i stwierdziliśmy, że waha się on na różnych urządzeniach Amazon, których używamy (najlepszą wartością był 32-bitowy średni procesor, gdy spadł do $$ / zdarzenie / sekundę) i nasze żądania / sekundy wahał się od 29 żądań / sekundę / węzeł do 150 żądań / sekundę / węzeł.

Zapewnienie lepszego sprzętu daje oczywiście lepsze wyniki, ale nie zapewnia najlepszego zwrotu z inwestycji. W każdym razie ten post był świetny, ponieważ szukałem podobieństw, aby sprawdzić, czy moje numery są na boisku i podzieliły się również moimi na wypadek, gdyby ktoś inny szukał. Mój jest całkowicie załadowany tak wysoko, jak tylko mogę.

UWAGA: dzięki żądaniom / drugiej analizie (nie ms / żądanie) znaleźliśmy poważny problem z linuxem, który próbujemy rozwiązać, polegający na tym, że linux (testowaliśmy serwer w C i javie) zawiesza wszystkie wywołania do bibliotek gniazd pod zbyt dużym obciążeniem co wydaje się bardzo dziwne. Właściwie cały post można znaleźć tutaj .... http://ubuntuforums.org/showthread.php?p=11202389

Nadal próbujemy rozwiązać ten problem, ponieważ daje nam to ogromny wzrost wydajności, ponieważ nasz test trwa od 2 minut 42 sekund do 1 minuty 35 sekund, gdy problem zostanie rozwiązany, więc widzimy poprawę wydajności o 33% ... nie wspominając, im gorszy atak DoS, tym dłuższe są te przerwy, aby wszystkie procesory spadły do ​​zera i przestały przetwarzać ... moim zdaniem przetwarzanie serwera powinno być kontynuowane w obliczu DoS ale z jakiegoś powodu zawiesza się co jakiś czas podczas DOS czasami do 30 sekund !!!

DODATEK: Dowiedzieliśmy się, że faktycznie był to błąd stanu wyścigu jdk ... trudny do wyodrębnienia w dużych klastrach, ale kiedy uruchomiliśmy 1 węzeł danych serwera 1, ale 10 z nich, mogliśmy go odtworzyć za każdym razem i po prostu spojrzeć na serwer / datanode, w którym wystąpił. Przełączenie jdk do wcześniejszej wersji rozwiązało problem. Chyba byliśmy na jdk1.6.0_26.


4

To bardzo otwarte pytanie od jabłka do pomarańczy.

Pytasz: 1. średnie obciążenie żądaniem dla aplikacji produkcyjnej 2. co jest uważane za szybkie

Te nie muszą być ze sobą powiązane.

Twoja średnia liczba żądań na sekundę jest określana przez

za. liczba jednoczesnych użytkowników

b. średnia liczba żądań stron wysyłanych na sekundę

do. liczba dodatkowych żądań (np. wywołań Ajax itp.)

A co jest uważane za szybkie… czy masz na myśli, jak niewiele żądań może przyjąć witryna? Lub jeśli sprzęt jest uważany za szybki, jeśli może przetwarzać xyz # żądań na sekundę?


1

Zwróć uwagę, że wykresy współczynnika trafień będą kształtami sinusoidalnymi z „godzinami szczytu”, które mogą być 2x lub 3x wyższe niż podczas snu użytkowników. (Może być przydatne, gdy planujesz codzienne przetwarzanie wsadowe na serwerach)

Efekt można zobaczyć nawet na „międzynarodowych” (wielojęzycznych, zlokalizowanych) witrynach, takich jak wikipedia


1

zwykle mniej niż 2 sekundy na użytkownika - tj. użytkownicy, którzy widzą wolniejsze odpowiedzi, uważają, że system jest wolny.

Teraz powiedz mi, ilu użytkowników połączyłeś.


1

Możesz przeszukać „analizę efektu slashdot”, aby znaleźć wykresy pokazujące, co byś zobaczył, gdyby jakiś aspekt witryny nagle stał się popularny w wiadomościach, np. Ten wykres na wiki .

Aplikacje internetowe, które przetrwały, są zwykle tymi, które mogą generować statyczne strony zamiast przesyłać każde żądanie za pośrednictwem języka przetwarzania.

Pojawiło się doskonałe wideo (myślę, że mogło być na ted.com? Myślę, że mogło to być zrobione przez zespół sieciowy flickr? Czy ktoś zna link?) Z pomysłami na to, jak skalować strony internetowe poza pojedynczy serwer, np. alokuj połączenia między serwery tylko do odczytu i do odczytu i zapisu, aby uzyskać najlepszy efekt dla różnych typów użytkowników.

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.