2014-12-05 24 views
12

Mam usługę WCF hostowaną w usłudze Windows komunikującej się z klientem WinForm przez netTCP.Liczniki wydajności w operacjach usług sieciowych

Usługa WCF była hostowana w IIS dawno temu i na tym etapie mogłem zobaczyć każdą operację usługi WCF w monitorze licznika wydajności (performanceCounters = "All"). Dzięki temu łatwo było zobaczyć, jakie operacje były najczęściej używane.

Potrzebuję tych liczników wydajności ponownie, ale tym razem nie mogę ich znaleźć w monitorze wydajności, nawet jeśli parametr performanceCounters ma wartość "Wszystkie"?

Co należy zrobić, aby je odzyskać?

Usługa WCF wymaga zalogowania, aby móc korzystać z jego operacji, ale logowanie jest wykonywane ręcznie, oznacza to, że użytkownik najpierw wywołuje operację logowania przy użyciu nazwy użytkownika i hasła, a jeśli nie jest poprawne dane, zostanie wygenerowany wyjątek securityException . A więc nic zaawansowanego.

+0

Czy próbowałeś już tych ustawień? http://www.codeproject.com/Articles/431917/WCF-Service-Performance-Monitoring-using-Perfmon –

+0

Czy dodano jakiekolwiek punkty rozszerzenia WCF, np. IOperationInvoker? Czy jesteś samodzielnym hosterem np. Usługa Windows lub IIS? Jaką tożsamość jest obsługiwana usługa? Czy sprawdziłeś dzienniki zdarzeń? Czego spróbowałeś do tej pory? –

+0

@ErikFunkenbusch Nie widzę, że artykuł już działa, a ja to zrobiłem. W ogóle nie mówi o wydajnościach dla poszczególnych metod usług sieciowych? – Banshee

Odpowiedz

1

WCF jest pełen świetnych narzędzi monitorujących i punktów końcowych rozszerzalności, które można wykorzystać lub podłączyć do własnego rozwiązania.

Z pewnością można uzyskać pewien poziom instrumentacji po wyjęciu z pudełka, http://msdn.microsoft.com/en-us/library/ms735098(v=vs.110).aspx ten artykuł wyjaśnia prostą zmianę app.config, którą należy opublikować.

Jeśli chcesz uzyskać bardziej szczegółowe informacje (lub po prostu coś, co nie jest jeszcze przewidziane dla ciebie), możesz stworzyć IOperationInvoker lub IParamterInspector, który jest wywoływany tuż przed wywołaniem metody (w twojej implementacji) i zaraz po jej zakończeniu. Używałem tego wcześniej do dodawania informacji kontekstowych do wątku przed wywołaniem metody, sprawdzania, czy wywołujący przekazuje parametry, do których używania są upoważnieni, oraz do oceny wydajności połączenia przez proste oznaczanie dat przed i po wywołaniu. Sprawdź listę http://msdn.microsoft.com/en-us/library/System.ServiceModel.Dispatcher(v=vs.110).aspx dla listy punktów rozszerzalności w stosie WCF. Powodzenia

Powiązane problemy