Jak mogę ponownie odtworzyć dzienniki dostępu Apache z powrotem na moich serwerach, aby przeprowadzić rzeczywiste testy obciążenia?

13

Patrzyłem na Narzędzia do testowania obciążenia serwerów HTTP? ale nie mogłem zobaczyć, jak odtworzyć własne dzienniki w żadnym z tych narzędzi. Mam błąd, który występuje tylko w przypadku niektórych operacji ładowania, których moje obecne testy JMeter i AB nie mogą odtworzyć.

Chcę po prostu dać narzędziu access_logs i pozwolić mu odtwarzać je, szybciej lub z tą samą prędkością.

Stewart Robinson
źródło

Odpowiedzi:

14

Możesz użyć komponentu Jmeter Access Log Sampler .

W tym pliku PDF znajduje się krótki samouczek na ten temat .

Dan Carley
źródło
3
Próbowałem tego i oczywiście muszę być kretynem, ponieważ nie mogłem sprawić, by działał dobrze. Skończyło się na użyciu skryptu python na insom.me.uk/z/2009/02/...
Stewart Robinson
Ponieważ oryginalny link nie działa, oto link w archive.org: web.archive.org/web/20090305084634/https://www.insom.me.uk/…
Yeung
Ok, na wypadek gdyby inni to znaleźli, ten skrypt ma problem z wątkami. Może być konieczne zastąpienie threadbiblioteki threadinglib biblioteką lib ( stackoverflow.com/questions/19558401/... )
Walty Yeung,
1

Zakładając, że wszystko, co masz w dzienniku dostępu, to żądania GET i nie masz nic przeciwko, że żądania gromadzą się na granicy rozdzielczości znaczników czasu w dziennikach, około 10 wierszy $ SCRIPTING_LANGUAGE powinno załatwić sprawę. Testy POST, pliki cookie, uwierzytelnianie HTTP i bardziej subtelne terminy są znacznie ciekawszym ćwiczeniem.

womble
źródło
-1

Wymagałoby to programu, takiego jak aplikacja do testowania obciążenia, który obsługuje odtwarzanie dziennika HTTP. Jedną z takich aplikacji jest HTTPerf ( https://github.com/httperf/httperf ).

Artykuł z poradnikiem znajduje się na stronie https://www.igvita.com/2008/09/30/load-testing-with-log-replay/

Barry G.
źródło
1
Byłaby to znacznie lepsza odpowiedź, gdyby zawierała rzeczywiste wyjaśnienie. Odradza się jedynie linkowanie do zewnętrznej strony internetowej, ponieważ strony internetowe mogą i często znikają.
Michael Hampton
-2

Zrobiłbym coś trochę inaczej. Rozumiem twoje pytanie, ale jeśli chcesz załadować serwer, możesz zajrzeć do narzędzia „ab”. Jest dostarczany z większością instalacji apache. Bieganie:

ab -c 15 -n 1000 http://site.name/

Wykona 1000 żądań, wykonując 15 żądań jednocześnie. Wiem, że nie jest to dokładnie to, czego szukasz, i spowoduje to zapytanie tylko o jeden adres, który podasz. Jeśli potrzebujesz załadować, jest to szybki i prosty sposób, aby to zrobić, i da ci potencjalnie bardzo przydatne statystyki do debugowania.

TrueDuality
źródło
Jeśli pytanie brzmi „Mam błąd, którego [...] testowanie AB [...] nie może się odtworzyć”, dlaczego sugerowałbyś użycie AB?
womble
Brakowało mi AB wymienionego w narzędziach. : p Chciałbym powiedzieć, że to była edycja, ale sam nie jestem pewien.
TrueDuality
-2

Dlaczego nie opracujesz własnego? Zdobądź dziennik; przeanalizuj to. Uzyskaj identyfikator URI. Nawiąż curl. Możesz to napisać w php i uruchomić w apache dla współbieżności.

Jeśli twoje dzienniki są w formacie gz, zrób Zcat, użyj funkcji readlog. To da adres URL. Teraz użyj phpCurl, aby trafić w adres URL. Aby uzyskać większą przepustowość, uruchom go w apache (użyj ab, aby go załadować).

Prashant R Kumar
źródło
1
Potem będę miał dwie aplikacje do załadowania testu. To byłoby przekręcone.
Stewart Robinson