Korekta : czas odpowiedzi ( %D
) to μs nie ms! 1
Nie zmienia to nic w dziwności tego wzoru, ale oznacza, że jest on praktycznie o wiele mniej niszczycielski.
Dlaczego czas odpowiedzi jest odwrotnie skorelowany z częstotliwością żądania?
Czy serwer nie powinien reagować szybciej, gdy jest mniej zajęty obsługą żądań?
Wszelkie sugestie, jak sprawić, by Apache „wykorzystywał” mniej obciążenia?
Ten wzór jest okresowy. Oznacza to, że wyświetli się, jeśli liczba wyświetleń spadnie poniżej około 200 żądań na minutę - co dzieje się (z powodu naturalnej aktywności użytkowników) od późnej nocy do wczesnego rana.
Żądania są bardzo prostymi testami POST wysyłającymi JSON o długości mniejszej niż 1000 znaków - ten JSON jest przechowywany (dołączany do pliku tekstowego) - to wszystko. Odpowiedź brzmi „-”.
Dane pokazane na wykresach zostały zarejestrowane w samym Apache:
LogFormat "%{%Y-%m-%d+%H:%M:%S}t %k %D %I %O" performance
CustomLog "/var/log/apache2/performance.log" performance
źródło
Odpowiedzi:
Jest to typowe zachowanie w centrach danych. Czas, w którym czas odpowiedzi jest wolny, odpowiada tak zwanemu Oknu wsadowemu. Jest to okres, w którym oczekuje się, że aktywność użytkownika będzie niska i można będzie uruchomić procesy wsadowe. W tym okresie wykonywane są również kopie zapasowe. Te działania mogą obciążać zasoby serwera i sieci, powodując problemy z wydajnością, takie jak widoczne.
Istnieje kilka zasobów, które mogą powodować problemy:
Używam
sar
do badania takich wydań.atsar
można wykorzystać do gromadzeniasar
danych w codziennych plikach danych. Można je zbadać, aby zobaczyć, jak zachowuje się system w ciągu dnia, gdy wydajność jest normalna, i bez zmian, gdy wydajność jest zmienna.Jeśli monitorujesz system za pomocą
munin
lub innego systemu, który gromadzi i wykresuje wykorzystanie zasobów, możesz tam znaleźć pewne wskaźniki. Nadal uważam zasar
bardziej precyzyjne.Istnieją narzędzia, jak
nice
iionice
które mogą być stosowane w procesach wsadowych w celu zminimalizowania ich wpływu. Działają tylko w przypadku problemów z procesorem lub I / O. Jest mało prawdopodobne, aby rozwiązały problemy z pamięcią lub aktywnością sieci.Przeniesienie kopii zapasowej do oddzielnej sieci i zmniejszenie rywalizacji sieci. Niektóre programy do tworzenia kopii zapasowych można skonfigurować w celu ograniczenia przepustowości, która będzie używana. To może rozwiązać konflikt sieci.
W zależności od tego, w jaki sposób uruchamiane są procesy wsadowe, można ograniczyć liczbę równoległych procesów wsadowych. Może to faktycznie poprawić wydajność procesów wsadowych, ponieważ prawdopodobnie doświadczają one tej samej rywalizacji o zasoby.
źródło
sar
może być przydatny. Znalazłem ten: en.wikipedia.org/wiki/Sar_(Unix)Relacja ta może się zdarzyć w przeciwnym kierunku, jeśli nadawcy żądania zaczekają na wypełnienie poprzedniego żądania przed przesłaniem nowego. W takim przypadku ruch spada wraz ze wzrostem czasu żądania (z dowolnego powodu) z powodu kolejkowania po stronie klienta.
Lub może to być artefakt pomiaru - jeśli powyższy wykres pokazuje ukończone żądania , w przeciwieństwie do żądań przychodzących , szybkość spada wraz ze wzrostem czasu przetwarzania żądań (przy założeniu skończonej pojemności: D).
źródło
Chociaż odpowiedź @ BillThor może być poprawna, wydaje się mało prawdopodobne, aby okres niskiego obciążenia został całkowicie zajęty przez procesy tworzenia kopii zapasowych (tj. Czy okresy są dokładnie dopasowane).
Alternatywnym wyjaśnieniem jest po prostu buforowanie. Jeśli dany skrypt / baza danych / cokolwiek nie było ostatnio używane, odpowiednie buforowane dane mogły zostać usunięte, aby zwolnić pamięć dla reszty systemu operacyjnego. Mogą to być indeksy bazy danych, bufory O / S w stosunku do pliku lub cokolwiek innego. Zapytanie będzie wówczas musiało odtworzyć tę informację, jeśli minęło trochę czasu od ostatniego zapytania. W okresach zajętości nie będzie to miało miejsca, ponieważ ostatnie zapytanie będzie częste. To by również wyjaśniało, dlaczego widzisz niskie czasy reakcji i wysokie czasy odpowiedzi w okresie zajętości.
źródło
strace
proces Apache, nie zobaczysz żadnychread()
wywołań systemowych lub podobnych? To byłoby dość niezwykłe.echo 3 > /proc/sys/vm/drop_caches
co 5 sekund przez minutę i sprawdź, czy masz podobny wpływ na czas odpowiedzi.To, co tam widzisz, wydaje mi się, że może to być problem statystyczny. Może nie być, odpowiedź @ BillThora może być słuszna, ale opublikuję to dla kompletności.
Wykresy czasu odpowiedzi są oparte na percentylach. Przykładowa pula 800-1000 żądań to dobra liczba próbek do tego celu, pula 50-100 żądań może nie tak bardzo.
Jeśli założymy, że liczba wolnych żądań nie jest liniową funkcją objętości żądań, tak że wzrost rzędu żądań nie powoduje wzrostu rzędu żądań wolniejszych, wówczas większe wolumeny zgłoszeń niższy średni czas zapytania.
źródło
Są kłamstwa, wielkie kłamstwa i statystyki.
Moja hipoteza: masz trzy różne kategorie wniosków:
W nocy 50 żądań na minutę to odpowiednio 20 + 20 + 10. I tak, wynik 50% percentyla silnie zależy teraz od wyniku strumienia 2. A 95% percentyla zależy od strumienia 3, więc nigdy nie będzie nawet widoczny na wykresie.
W ciągu dnia strumienie 2 + 3 są dobrze ukryte powyżej 95% percentyla.
źródło
Im dłużej na to patrzę, tym bardziej skłonny jestem myśleć, że istnieje problem z gromadzeniem danych.
Po pierwsze, z Twoim TPS dzieje się coś naprawdę dziwnego. Podczas gdy ogólny wzór wygląda normalnie, występuje bardzo ostra przerwa o około 21 wieczorem, a następnie o około 7 rano. Normalny wykres będzie znacznie płynniejszy podczas przejścia do godzin poza szczytem.
Sugeruje to zmianę profilu i możliwe, że masz 2 różne typy klientów:
Druga wskazówka to około 18:00. Przez większość czasu przed i po mamy profil wysokiego poziomu głośności - wysokie TPS i małe opóźnienia. Ale około 18:00 następuje nagły spadek z 800-1000 RPM do mniej niż 400 RPM. Co może to spowodować?
Trzecią wskazówką jest obniżenie czasów reakcji w piątym percentylu. Właściwie wolę patrzeć na minimalne czasy odpowiedzi (ale 5. percentyl jest prawdopodobnie lepszy) z dwóch powodów: Mówi mi o czasie usługi (tj. Czas odpowiedzi minus kolejkowanie), a czasy odpowiedzi mają tendencję do podążania za rozkładem Weibulla, co oznacza, że tryb (lub najczęstszą wartością) jest nieco powyżej minimum.
Tak więc obniżenie piątego percentyla mówi mi, że nastąpiła nagła przerwa w serii, a czas obsługi faktycznie skrócił się, mimo że zarówno wariancja, jak i średni czas reakcji znacznie wzrosły.
Następne kroki
Na tym etapie zagłębiałbym się w dzienniki, aby dowiedzieć się, co różni się w próbkach o małej objętości 18:00 w porównaniu do próbek o dużej objętości przed i po nim.
Szukałbym:
BTW, „zdarzenie” o 18:00 jest dla mnie wystarczającym dowodem na to, że nie ma to nic wspólnego z przeciążeniem / aktywnością centrum danych. Aby to było prawdą, przeciążenie musiałoby spowodować spadek TPS, co jest możliwe o godzinie 18:00, ale jest bardzo mało prawdopodobne, aby powodowało trwały i płynnie zakrzywiony spadek TPS przez 10 godzin między 21:00 a 7:00.
źródło