2009-02-25 13 views
6

Szukam sposobu, aby sama aplikacja monitorowała ilość używanej pamięci, więc mogę nagrać ją w pliku dziennika co godzinę i zachować oko na wykorzystanie aplikacji.Monitorowanie pamięci aplikacji ASP.NET z poziomu aplikacji

Wszystko hostowane, dzięki czemu możemy wprowadzać zmiany w systemie, aby zobaczyć, co się dzieje, aby rozwiązanie musiało pochodzić z kodu aplikacji.

Możemy w przyszłości używać informacji o pamięci, aby wpływać na zasady buforowania.

Odpowiedz

5

Hmm, jak szczegółowe informacje są potrzebne? Jeśli chcesz tylko użyć pamięci, możesz poprosić GC. On wie. ;)

long bytes = GC.GetTotalMemory(false); // use 'false' to not wait for next collect 

Zmienna "bajty" będzie zawierała liczbę bajtów aktualnie przydzielonych w zarządzanej pamięci. Nie jestem pewien, czy zarządzana pamięć pociąga za sobą cały proces, czy tylko AppDomain. Będziesz musiał to przetestować, uruchamiając kilka AppDomains w jednym procesie i sprawdzając, czy alokacja zarządzanej pamięci jest mierzona przez AppDomains. Jeśli nie, możesz użyć tego do pomiaru całkowitego wykorzystania pamięci w aplikacji ASP.NET.

Jeśli chcesz uzyskać więcej szczegółowych informacji, istnieje interfejs API diagnostyki dla CLR, z którym możesz się połączyć. Istnieje również wiele profilerów pamięci, ale jeśli będą działać w aplikacji ASP.NET, nie mogę powiedzieć.

1

Alternatywnie, aby uzyskać bardziej szczegółowe informacje, można odczytać liczniki wydajności za pomocą klasy System.Diagnostics.PerformanceCounter. Oto niektóre z liczników, które można podłączyć do:

Zapytanie Bajty Out Razem

Żądanie Bytes W sumie

Czas żądania Wait

Wnioski Realizującymi

kupna/s

Błędy ogółem

Powiązane problemy