Vraag Aan de slag met de WCF Performance-profilering


Ik probeer te achterhalen hoe ik een WCF-service kan profileren, zodat ik eventuele knelpunten kan identificeren.
Ik heb een beetje informatie online gevonden, maar niets dat ervan uitgaat geen voorkennis waar ik ben.

Wat zijn aanbevolen GRATIS tools?

- visual studio tools
- clrprofiler 

Hier is informatie die ik vond met behulp van vsperfcmd.exe om wcf service te profileren en volgens dit is het heel eenvoudig, maar ik moet de gaten invullen waar te beginnen. Mijn aannames zijn om VsPerfCLREnv en VsPerfCmd te kopiëren naar de server die mijn WCF-service host en een aantal configuraties uit te voeren waarvan ik niet zeker ben. Ik weet ook niet precies hoe ik de call stack zou kunnen zien om de prestaties van elk gesprek te evalueren.

clrprofiler lijkt een beetje eenvoudiger. Ik neem aan dat ik clrprofiler.exe naar de server zou kopiëren, File->Profile Service en voeg de naam toe en start / stop-commando's. (is dit een beschrijvende naam of bestandsnaam of de naam van de serviceweergave?) Ik neem aan dat ik dan mijn tests tegen de service voer en ik kon de oproepstack in clrprofiler zien. Klinkt dat correct?

[Bewerk]
Ik ben niet zo geïnteresseerd in het testen van het netwerk omdat dit op een testserver staat, en dit is een groot WCF-project met meerdere ontwikkelaars en ik kan het project niet wijzigen om de prestaties te bewaken. Ik wil me concentreren op de uitvoering van de feitelijke methoden erin.

Alle hulp bij het opstarten wordt zeer op prijs gesteld.


12
2017-10-14 19:34


oorsprong


antwoorden:


Voor WCF is het niet voldoende om je code alleen te profileren, omdat er veel dingen gebeuren op de kanaalstack (beveiliging, deserialisatie, opmaak, enz.). Een goede manier om dat te visualiseren is door WCF Tracing op uitgebreid niveau te gebruiken en vervolgens de servicetrack viewer om te zien hoe lang het duurt bij elke stap van de berichtverwerking. Lees hier hoe u dit moet doen configureer en gebruik WCF-tracering. Dit is het enige dat me heeft geholpen met het diagnosticeren van WCF-problemen.

Natuurlijk zijn alle andere codeprofielen, DB-profilering, enz. Ook een geldige benadering. U kunt zelfs een hulpprogramma gebruiken zoals SoapUI om uw netwerkcommunicatie en prestaties aan de kant van de klant te testen voor een meer end-to-end benchmark.


6
2017-10-15 00:26



sommige dingen die ik heb geleerd dat iemand nuttig zou kunnen vinden:

u kunt een service op afstand niet profileren, zelfs niet via uw lokale netwerk. De profiler moet op dezelfde machine worden uitgevoerd als de service. (Dit heeft me echt een tijdje gekost om erachter te komen. Misschien wel voor de hand liggend, maar het is nooit uitgesproken, dus ik bleef het proberen)

Visual Studio werkte niet voor mij om mijn WCF-service te profileren. Ik kon een beetje hulp krijgen van het VS profiler-team, maar kwam er nooit uit met een werkende oplossing.

VS was traag om verbinding te maken en de profiler los te koppelen en heeft vaak mijn binaries geïnstrumenteerd en ze in een beschadigde toestand achtergelaten.

.net-binaire bestanden hoeven niet te worden geïnstrumenteerd, omdat ze de metadata bevatten van de methoden, wat vreemd is dat de visuele studio mijn binaries probeerde te bespelen om ze te instrumenteren.

Ik heb ook de standalone profiler VS geprobeerd, maar dit is erg complex in gebruik en vereist opnieuw opstarten van mijn server.

Uiteindelijk kreeg ik een interne profiler om te werken (nadat ik een privé-versie van het team had gemaakt), dus ik weet niet zeker hoeveel profilers er zijn die zijn ontworpen om met een WCF-service te werken.

Ik heb de profiler ingesteld om de WAS-service te bekijken en vervolgens mijn extra binaire bestanden aan de profiler toegevoegd.

procesverkenner is handig bij het oplossen van problemen als de profiler is aangesloten of niet. Gebruik het om naar de inetinfo.exe-omgeving te kijken


5
2017-11-29 22:26



Kun je het uitvoeren onder een debugger?

Kun je tegen een eenvoudige, ouderwetse methode in werkt gewoon? Hier is er een.


1
2017-10-14 21:55



Naast de opmerkingen van Mike kunt u de ingebouwde WCF-prestatiemeteritems gebruiken om een ​​aantal prestatiegerelateerde meetwaarden te bekijken en kunt u ook de beltijd bekijken op een WCF-trace. Zodra u weet welke bewerkingen 'traag' zijn, is het meestal gemakkelijker om een ​​aangepaste timing / logging-code toe te voegen aan die bewerkingen dan een profiler voor algemene doeleinden te gebruiken voor zoiets. Dit komt van iemand die aan commerciële profilers werkte.


1
2017-10-15 00:13



Tools waar u naar moet kijken: svctracelogviewer (en schakel tracing in zowel uw service als klanten in). SoapUI voor het simuleren van load (en do-analyse) en Fiddler, een uitstekende HTTP-sniffer / diagnostische tool.


1
2017-10-15 06:16