2011-08-25 10 views
6

Aktualnie poszukuję sposobów na zebranie analityki/danych dotyczących wydajności komputerów klienckich do naszej aplikacji internetowej. Aplikacja jest silnie ajaxowa i mamy nadzieję zebrać kilka statystyk na temat tego, jak dobrze obsługują ją komputery klientów.Mierzenie wydajności klientów

Niekoniecznie chcemy umieścić kod monitorowania wydajności w całej aplikacji (z wielu powodów może to i tak nie być możliwe). Zamiast tego chcielibyśmy móc przeprowadzić jakiś test lub coś takiego, gdy użytkownik przesyła opinie, które mogą nam dać wyobrażenie o tym, jak dobrze działa ich przeglądarka/komputer.

Badanie było nieco trudne, ponieważ wciąż wywołuje dyskusje na temat profilowania itp. Jest to oczywiście użyteczne, ale tylko do tego stopnia, że ​​nasze maszyny programistyczne są masowo obezwładniane. Mamy nadzieję uzyskać informacje o rodzajach maszyn, z którymi nasi klienci się łączą.

Czy istnieje jakaś biblioteka/framework lub najlepsza praktyka? Jak dotąd jednak najlepiej jest uruchomić jakiś proces intensywny procesora przez JS na kilka sekund i zmierzyć wydajność w ten sposób ...

Myśli lub sugestie? Może być interesująca dyskusja.

+1

Nie wystarczy, aby być odpowiedzią: tworzymy vm w tym celu. Ogranicz go do 1 procesora i 512 MB i "tej brzydkiej wersji przeglądarki, której klient wciąż używa". Po prostu poczuj, jak reaguje. Jest łatwy w konfiguracji i myślę, że powinieneś zmusić programistów do częstego oglądania swojej pracy z punktu widzenia końcowego użytkownika. – Eddy

+0

@Eddy: nie zapomnij o przepustowości podobnej do dial-up – drlemon

+0

Nie jestem pewien, jak dobrze by działało (jeśli w ogóle) w maszynie wirtualnej, ale miałem szczęście z dummynet (http: //info.iet.unipi. it/~ luigi/dummynet /) do dławienia połączenia sieciowego podczas testowania klienta. – AngerClown

Odpowiedz

0

To interesujące pytanie, ponieważ przedstawiłeś większość profili programistów na swoich maszynach. Nie jestem pewien, czy jest jakiś inny sposób poza umieszczeniem profilera wydajności w kodzie. Interesująca część, o której wspomniałeś, jest oparta na opiniach użytkowników i niekoniecznie jest wysyłana do serwera na cały czas.

mogliśmy opracować Profiler javascript klasy, które zasadniczo zbiera:

  • nazwa funkcji
  • Network Time round trip
  • Razem wykonywania funkcji czasu
  • UserMachineProcessingTime = całkowite wykonanie funkcji czasu sieciowego obie
  • Inne przydatne informacje (podobne do tego, co zapewnia narzędzie YSlow lub podobne narzędzia)

Jak wspomnieliśmy, że jego działanie opiera się na opinii użytkowników, nie musimy wysyłać tych informacji przez cały czas, ponieważ wywoływana jest każda funkcja (co powoduje, że aplikacja jest bardzo rozmowna). Następnie gromadzimy te informacje po stronie klienta i ewentualnie przechowujemy je w dowolnym miejscu (może przy użyciu lokalnego magazynu HTML5).

Tylko wtedy, gdy użytkownik wyrazi zgodę na przesłanie profilu skuteczności, wówczas wyślemy tę informację na serwer, z którego otrzymujesz potrzebne dane. Interesujące byłoby również zobaczyć, jak zareaguje użytkownik, gdy usłyszymy malutki komunikat: "Zauważamy, że twoja skuteczność jest poniżej średniej dla przeciętnego użytkownika. Czy chcesz wysłać swój profil skuteczności, abyśmy mogli się uczyć i poprawić?" (Niezbędne jest inne sformułowanie, jestem z tym zły, ale w gruncie rzeczy jest to przesłanie). Po powiedzeniu "tak" Profil wysyła zebrane informacje, które zebrał + dodatkowe informacje, które JavaScript może zebrać (agent użytkownika itd.). Oczywiście pytanie brzmi, ilu użytkowników zdecyduje się przesłać informacje o swoim profilu, ale jest to jedno podejście, które moglibyśmy wypróbować.

+0

To interesująca dyskusja. Niestety nie możemy instrumentować dużej ilości kodu za pomocą profilowania, ponieważ jest to w dużej mierze wstępnie zakupiony pakiet, który dostosowaliśmy. Obawiam się też, że ciągłe tworzenie profili może obniżyć wydajność, szczególnie w tych przypadkach, w których naprawdę jesteśmy zainteresowani: ludzi ze strasznymi komputerami. Mam nadzieję, że wymyślę jakiś stosunkowo krótki test, który mógłby zostać uruchomiony w tle, podczas gdy w sekcji "feedback" można uzyskać podstawowe pojęcie o wydajności klienta. – rat

2

Oto, co robimy, aby monitorować i analizować dane o użytkowaniu klienta ...

  • użycie Google Analytics do przechwytywania informacji o Użytkowniku (platformy, przeglądarki, szybkości połączenia, Wykorzystanie witryny, itp)

  • użytkowania Google Webmaster Tools uzyskać dodatkowe statystyki witryny i sugestie optymalizacyjne

  • użycie Pagespeed plugin do analizy/precyzyjnego dostrajania dużej i/lub wolnej strony

  • użycie Apache AB lub JMeter - aby uruchomić podstawowe testy obciążenia dla stron o dużej objętości:

+0

Inne przydatne narzędzie: Fiddler (http://www.fiddler2.com/fiddler2/) z dodatkiem wydajności neXpert (http://www.fiddler2.com/fiddler2/addons/neXpert.asp). –

Powiązane problemy