2009-10-19 10 views
6

Mam usługę Windows .NET, która ma dużo magii sieci (WMI, Ping, itp. - lista jest bardzo długa). Chciałbym profilować, z jak największą łatwością i szczegółami, ile przepustowości aplikacja używa w sumie, jak również każdą część kodu.Jak profilować wykorzystanie sieci aplikacji .NET?

Czy są jakieś narzędzia, które mogą mi w tym pomóc? Na przykład profiler Ants pomoże mi w profilowaniu pamięci i profilowaniu wykorzystania procesora. Jednak nie ma to większego znaczenia z profilowaniem sieci. Czy istnieje coś takiego jak ANT do profilowania sieciowego? Jeśli nie, to jakie są moje opcje, jeśli chodzi o uzyskanie tych informacji?

Dzięki

w odpowiedzi na niektóre odpowiedzi: Dodano do wyjaśnienia

Cokolwiek narzędzie, jeśli nie można bezpośrednio powiązać z kodem (co nie sądzę, jest to możliwe) musi być w stanie pracować bez nadzoru przez kilka dni, śledząc (logując się do pliku lub bazy danych) ruch sieciowy wykorzystywany przez proces. Musi być w stanie bezpośrednio określić proces (którego nie może zrobić wireshark). Microsoft Network Monitor może to zrobić, ale robi o wiele więcej (tyle analizowania - klatka po klatce), że nie nadaje się do użytku z powodu problemów z wydajnością (po kilku godzinach działania mam już milion ramek do zsumowania. spróbuj skopiować pliki do programu Excel lub do bazy danych, sama kopia zajmuje ponad 30 minut).

Naprawdę, wydaje się to być tak proste, jednak mam zaskakująco ciężko znaleźć narzędzie, które zrobiłoby to, co chcę.

Odpowiedz

1

Możesz użyć narzędzia Wireshark, aby przechwycić wszystkie pakiety wychodzące z urządzenia, na którym działa usługa. Następnie możesz filtrować te pakiety w oparciu o zawartą w nich zawartość, aby ograniczyć te pakiety, które są dla Ciebie ważne. Korzystając z tych informacji, możesz znaleźć dane, których szukasz.

+0

To może zadziałać, ale nie jest wcale łatwe. Po pierwsze, nie wydaje się, że można filtrować według procesu, który byłby ogromny na coś takiego. Po drugie, nie łączy go w ogóle z kodem (jak profiler ANT, czy wydajność pamięci i procesora). Więc tak, to jest krok, ale szukam czegoś więcej. – Mark

+0

Powodem, dla którego jest to trudne, jest fakt, że próbujesz śledzić informacje poza procesem i powiązać je z atrybutami procesu. Powodem, dla którego te inne narzędzia działają tak dobrze, jest to, że są one związane z zarządzanym kodem w procesie. Jeśli korzystasz z WCF, możesz być w stanie nieco lepiej śledzić, ale wciąż masz do czynienia z problemem OoP. –

1

Ja całkiem lubię SocketSniff. Dołącza się do jednego działającego procesu i pokazuje cały ruch związany z gniazdem. Nie ma świetnego dekodowania takiego jak WireShare, ale usuwa również wiele szumów.

Powiązane problemy