WCF pro začátečníky – 6. díl: měření údajů pomocí Performance Counters
autor Kryštof Laryš
| publikováno 21. března 2010
Performance countery nám slouží k měření spousty údajů týkajících se služby, endpointů či kontraktů.
Pokud nás zajímá, kolikrát si klient spustil naši službu, kolikrát se připojil na ten či onen endpoint či vyvolal určitý kontrakt, jsou pro nás performance countery jako dělané. Můžeme se dozvědět spoustu zajímavých informací, jako jsou například:
· kolikrát byla služba spuštěna
· jak dlouho trvá její spuštění
· kolik spuštění selhalo
· kolikrát se kanál dostal do stavu faulted
· kolik zpráv ve frontě bylo odmítnuto
· kolik zabezpečených zpráv bylo přijato či odmítnuto
· kolik transakcí bylo přijato či zrušeno
· mnoho mnoho a mnoho dalších
Tato měření týkající se služby ovšem můžeme použít u každého endpointu zvlášť, takže naše statistiky pak mohou být více konkrétní. Co víc, měření můžeme provádět i na úrovni samotných kontraktů. To už zacházíme do nejpodrobnějších statistik, jelikož přesně víme, kolikrát se daný kontrakt použije na úkor ostatních atd.
Jak tedy provést takovéto měření?
Když máme vytvořenou nějakou službu, musíme v její konfiguraci v záložce Diagnostics přepnout Performance Counters na All. Pokud bychom přepli pouze na ServiceOnly, nemohli bychom sledovat endpointy a kontrakty, ale pouze službu jako celek. Služba, která má aktivovány performance countery na All spotřebovává hodně paměti a pokud běží dlouho, řádově více než pár minut, mohla by se nám objevit chyba, že byl překročen limit pro zapisování dat do logu. Můžeme tedy nastavit více paměti, která se bude používat pro danou službu. To provedeme zápisem do konfiguračního souboru služby App.config, do elementu
<system.diagnostics>:
<performanceCounters filemappingsize="33554432"/>
524288 bytů je defaultní hodnota, minimální hodnota je 32768 bytů a maximální 33554432 bytů.
Službu spustíme a tím se nám zaregistruje její běžící instance do měřícího programu. Ten spustíme příkazem perfmon v příkazové řádce. Klikneme na ikonku + neboli Přidat (klávesová zkratka ctrl+i) a objeví se nám okýnko s přidáním kategorie counterů. Nyní si můžeme vybrat mezi výše zmíněnými třemi druhy kategorií counterů. Pro měření služby vybereme ServiceModelService 3.0.0.0. V levé části okýnka máme typy counterů, které chceme použít a v pravé části okýnka máme aktuálně běžící instance služeb. Pokud chceme vybrat měření endpointů, vybereme kategorii ServiceModelEndpoint 3.0.0.0 a pokud kontraktů, vybereme ServiceModelOperation 3.0.0.0.
Samozřejmě, může se stát, že v určitém scénáři nám nebude vyhovovat ani jeden z dostupných counterů, takže si budeme muset vytvořit svůj vlastní. I taková možnost tu je. Na to však budeme potřebovat pokročilejší znalost vývoje performance counterů. Vytváření custom performance counterů je docela dost podrobně popsáno v MSDN library i se spoustou ukázkových vlastních counterů. Jako výchozí bod včetně ukázkového příkladu slouží velmi dobře www stránka na MSDN:
http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx
Kryštof