Diagnostyka aplikacji webowych – Glimpse

Dzisiaj chciałbym zaprezentować bibliotekę Glimpse, służącą do wyświetlenia informacji m.i.n o czasie i liczbie wykonanych zapytań. Doskonale nadaje się do sprawdzenia, które strony wykonują się dłużej niż powinny. Warto zaważyć, że Glimpse wyświetla wszystkie te informacje  za pomocą HTML a nie dodatkowego plugina w przeglądarce.

Instalacja jest bardzo prosta – przechodzimy do NuGet i wybieramy po prostu Glimpse:

image

Następnie, wystarczy, że po zainstalowaniu przejdziemy do http://localhost:58935/Glimpse.axd, a wyświetli się panel konfiguracyjny:

image

Włączamy glimpse i od teraz odwiedzając każdą stronę zobaczymy wstrzyknięty panel Glimpse (na samym dole):

image

Jak widać, mamy informacje o czasach wykonania poszczególnych części (widok, akcja) jak i całego zapytania. Panel pokazuje również nazwę kontrolera oraz akcji. To jednak dopiero początek jego możliwości, ponieważ można go otworzyć i pokażę się mnóstwo dodatkowych informacji:

image

Na przykład w zakładce Execution możemy zobaczyć przebieg wykonania zapytania:

image

Bardzo przydatnym narzędziem jest również Routes. Możemy podejrzeć tam zdefiniowany routing jak i dopasowane parametry (wraz z routingiem, który został użyty):

image

Cache z kolei przedstawia parametry buforowania – w praktyce naprawdę bardzo przydatne:

image

Timeline za to to pozwala w szybki sposób dowiedzieć się, które elementy aplikacji zajmują najwięcej czasu:

image

Z kolei w zakładce trace wyświetlane są informacje wygenerowane przez klasę Trace np.:

public ActionResult About()
{
  ViewBag.Message = "Your app description page.";

  Trace.Write("Test message");

  return View();
}

Kod spowoduje, że w Trace zostanie wyświetlona dana wiadomość:

image

Nie będę opisywał tutaj wszystkich zakładek ponieważ najlepiej po prostu ściągnąć i przetestować rozwiązanie na własnym projekcie.  Warto jednak wspomnieć jeszcze o zakładce Ajax, pozwalającej na sprawdzenie, jakie zapytania zostały wysłane.

Leave a Reply

Your email address will not be published.