2009-09-05 15 views
5

Obecnie pracuję nad ciężkim kodem Ajax i zastanawiam się, jak mój serwer będzie skalowad, gdy coraz więcej użytkowników (miejmy nadzieję) zacznie korzystać z mojej aplikacji internetowej. To jest tylko na moim wewnętrznym serwerze testowym i zastanawiałem się, jak poradzić sobie z symulowaniem kilkuset tysięcy użytkowników, aby zobaczyć, jak radzi sobie z większym obciążeniem. Jest napisany w PHP/MySQL i naprawdę nie chciałem znaleźć setek komputerów do skonfigurowania i przetestowania ręcznie :) Z góry dziękuję, każda rada lub kierunek jest bardzo doceniana.Testowanie kodu Skala

Odpowiedz

11

Benchmark Apache. Jest dostarczany z serwerem WWW Apache. Działa trochę tak: Na 100 wnioski stosując 10 jednoczesnych wątków, użyj polecenia:

ab -n 100 -c 10 http://localhost/ 

Wymień url localhost z adresem URL, że kod AJAX zostanie dzwonisz. Dane wyjściowe dostarczą ładnego raportu na temat przetwarzania wniosków. Niektóre z ciekawszych numerów to:

Complete requests 
Failed requests 
Requests per second 
+0

W tym samym duchu, jak 'ab', tam Tsung - http://tsung.erlang-projects.org/ używam i jest to fantastyczne narzędzie. – inerte

0

Co mam zrobić, co daje bardzo grubsza, jest napisać aplikację, która może tworzyć dziesiątki lub setki wątków i przypadkowo uderzyć kilkadziesiąt serwerów razy każdego , z unikalnymi użytkownikami.

Tak, miałem 100 unikalnych użytkowników testowych, a ja tworzyłem 100 wątków i po prostu losowo kontynuowałem wykonywanie niektórych operacji w losowych odstępach czasu.

Dzięki temu dowiesz się, czy masz problemy ze skalą.

W końcu będziesz miał problem, ponieważ masz tylko jedno połączenie sieciowe, więc niektóre z nich zmniejszą prędkość, więc nie jest idealnie.

Możesz również użyć junitperf, aby pomóc w tym, ponieważ możesz wtedy sprawdzić, czy każdy test trwa zbyt długo, aby odpowiedzieć.

Najlepiej jest wziąć te testy, umieścić je na jak największej liczbie maszyn i uruchomić je jednorazowo, aby 10 komputerów, z których każdy udawał 10 lub 100 osób, było bardziej skuteczne niż posiadanie jednego komputera do udawania być każdym z tych ludzi.

Nie będziesz chciał, aby serwer WWW i testy były na tym samym komputerze, w przeciwnym razie może to poważnie zepsuć wyniki, ponieważ serwer WWW będzie pobierał tylko niektóre cykle procesora.

0

Biorąc pod uwagę ten problem, zapisałbym sesję użytkownika. Następnie napisz kod klienta, który odtwarza ten zestaw połączeń.

Inną opcją byłoby użycie VMware. (zauważ, jestem pracownikiem) Po prostu stwórz kilka maszyn wirtualnych i połącz się z witryną za pomocą każdego z nich. Ciągle oznacza dużo pracy ręcznej, ale przynajmniej nie potrzebujesz aż tylu maszyn, aby wykonać test.