Czy istnieje sposób przetestowania działania witryny pod obciążeniem

9

Zrobiłem stronę Asp.net MVC i hostowałem ją na współużytkowanym dostawcy hostingu. Ponieważ moja witryna otacza bardzo ogólny pomysł, w przyszłości może mieć wielu współbieżnych użytkowników.

Tak więc myślałem o sposobie przetestowania mojej witryny pod kątem wydajności pod obciążeniem. Podobnie jak wydajność witryny, gdy 100 lub 1000 użytkowników jest jednocześnie online i surfuje po witrynie. Pomoże mi to również zrozumieć, czy moje zapytania LINQ są dobrze napisane, czy nie.

Pankaj Upadhyay
źródło

Odpowiedzi:

12

Przede wszystkim właściwym terminem jest test warunków skrajnych . Istnieje wiele rozwiązań testów warunków skrajnych w witrynie, jednym z hostowanych rozwiązań, które polecam, jest loadimpact . Robią to bombardowanie Twojej witryny żądaniami z różnych serwerów na całym świecie i dostarczają analitycznego raportu na temat tego, jak Twoja strona radziła sobie ze stresem. Mają bezpłatny test, w którym możesz uzyskać ogólny pomysł, ale aby uzyskać więcej, musisz zapłacić opłatę subskrypcyjną.

Te rodzaje testów testować tylko na stronie internetowej od odwiedzających punktu widzenia, aby uzyskać więcej informacji należy konkretnego profilu aplikację lokalnie, a ja naprawdę nie mam nic więcej do dodania do poprzednich odpowiedzi, używam Apache JMeter także .

I na koniec, jak każdy programista internetowy, który jest świadomy wydajności, powinieneś spojrzeć na YSlow :

YSlow analizuje wydajność strony internetowej, badając wszystkie komponenty na stronie, w tym komponenty dynamicznie tworzone za pomocą JavaScript. Mierzy wydajność strony i oferuje propozycje ulepszeń.

YSlow dla Firefoksa jest zintegrowany z narzędziem do tworzenia stron internetowych Firebug dla Firefoksa.

Najczęściej uważam, że JavaScript jest wąskim gardłem, a nie kodem zaplecza ani bazą danych. Oczywiście źle napisane zapytania mogą być poważnym ograniczeniem wydajności, ale kiedy sobie z nimi poradzisz, zawsze uruchamiaj YSlow i postępuj zgodnie z jego sugestiami, to jest ratowanie życia.

Dalsza lektura:

na StackOverflow, oczywiście!

Yannis
źródło
Oczywiście zapoznaj się z innymi rozwiązaniami, zanim zapłacisz abonament loadimpact. Istnieje kilka podobnych rozwiązań. Uwielbiam to, ale za pracę zapłaciłem nie ja :)
yannis
Będę korzystać z bezpłatnego testu .... na razie nie chcę rygorystycznych testów, ponieważ na chwilę obecną nie ma to sensu ... po prostu chcę uzyskać pomysł :-)
Pankaj Upadhyay
7

Jesteś na hostingu współdzielonym, więc jest mało prawdopodobne, abyś mógł przeprowadzić testy, które właściwie wskazują na wydajność, ponieważ nie ma gwarancji poziomu zasobów, do których Twoja aplikacja będzie miała dostęp w dowolnym momencie.

Jednak w tej sytuacji chciałbym zacząć od uruchomienia testu osobno na dedykowanym urządzeniu (może to być Twój własny laptop); użyj narzędzia takiego jak Visual Studio Load Test Suite lub JMeter (którego osobiście nie mogę znieść) i zbuduj zestaw testów, które reprezentują typową ścieżkę w Twojej aplikacji (powinieneś być w stanie uzyskać informacje o typowej ścieżce poprzez użycie Google Analytics. Jeśli nie jest dostępny, możesz użyć takiego, który Twoim zdaniem jest prawdopodobny, ale pamiętaj, że nie da to tak dokładnej linii bazowej). Następnie wykonaj test rozruchu, zacznij od 1 użytkownika, a następnie powoli dodawaj użytkowników, aż osiągniesz szacowane obciążenie szczytowe. To powinno ci pokazać, jak dobrze twój system wytrzymuje jako całość (osobiście lubię posuwać się dalej, aby upewnić się, że mam trochę miejsca).

Ostatnią rzeczą, którą chcesz zrobić, jest uruchomienie narzędzia do profilowania, takiego jak profilowanie wydajności ANTS podczas uruchamiania testu (pamiętaj, że powoduje to dodatkowe obciążenie). Pozwoli ci to zidentyfikować długo działające zapytania i metody, dając ci wskazówki co do tego, gdzie twoja aplikacja jest naprawdę wolna (jedna wskazówka: prawie nigdy tak naprawdę nie jest tam, gdzie myślisz, że będzie).

Głównym problemem będzie, jak powiedziałem wcześniej, fakt, że korzystasz z hostingu współdzielonego, więc prawie niemożliwe będzie wykonanie jakiejkolwiek realistycznej emulacji środowiska na żywo. Jeśli jednak aplikacja ma wystarczającą ilość miejsca w środowisku podobnym do obiecanych zasobów, powinieneś mieć pewność, że kod utrzyma się na twoim hoście, nawet jeśli przekroczysz granice swojego środowiska, zanim się tego spodziewasz.

Ed James
źródło
dzięki za rzucenie światła na różnicę między testowaniem hostingu współdzielonego a własnym serwerem.
Pankaj Upadhyay
3

Możesz zajrzeć do narzędzi takich jak JMeter lub The Grinder .

Do tej pory korzystałem tylko z JMeter, jest to narzędzie graficzne, które pozwala łatwo budować plany testów. Możesz symulować wielu użytkowników z wieloma wątkami. Możesz również rejestrować typowe sposoby korzystania z witryny, łącząc przeglądarkę z serwerem proxy JMeter i wykonując rzeczywistą pracę, dzięki czemu nie musisz samodzielnie pisać wniosków od zera. Grinder jest oparty na skryptach, jeśli dobrze pamiętam, może również dobrze pasować.

ftr
źródło
1

Lubię też Loadimpact do testów warunków skrajnych. Jedną z rzeczy, których używam do szybkich kontroli w mojej witrynie, jest Apache Bench. Kiedy chcę przeprowadzić ostatnie testy, spojrzę na usługę płatną.

Moja praca zainwestowała również w WebLoads, co jest bardzo drogie, ale pozwala nam na przetestowanie wszystkich naszych stron wewnętrznie. Nie polecam tego jednak.

uadrive
źródło
0

Nie sądzę, aby testowanie obciążenia można było wykonać ręcznie, ponieważ zajmie to więcej czasu niż oczekiwano i będzie uciążliwym zadaniem. Prawdopodobnie możesz wybrać Load Runner, który może przejść dla wielu użytkowników.

dsdsf
źródło
0

Skrypt Autohotkey (AHK) może symulować użytkownika. Niech działa cały dzień.

Możesz uruchomić go na kilku urządzeniach, aby symulować kilku użytkowników. Zaletą jest to, że styl testowania jest całkowicie pod twoją kontrolą. Możesz mieć 1 skrypt AHK spamujący funkcję raportu i sprawdzić, czy wpływa ona na użytkowników innych funkcji.

Chociaż nie znam umiejętności wątków AHK, więc symulacja tysięcy użytkowników może być trudna. Możesz być związany liczbą posiadanych komputerów.

mike30
źródło