Megosztás a következőn keresztül:


WCF teljesítményszámlálók

A Windows Communication Foundation (WCF) számos teljesítményszámlálót tartalmaz, amelyek segítenek felmérni az alkalmazás teljesítményét.

Teljesítményszámlálók engedélyezése

A WCF-szolgáltatás teljesítményszámlálóit a WCF szolgáltatás app.config konfigurációs fájljának használatával engedélyezheti az alábbiak szerint:

<configuration>  
    <system.serviceModel>  
        <diagnostics performanceCounters="All" />  
    </system.serviceModel>  
</configuration>  

Az performanceCounters attribútum beállítható úgy, hogy egy adott típusú teljesítményszámlálót engedélyezzen. Az érvényes értékek a következők:

  • Minden: Minden kategóriaszámláló (ServiceModelService, ServiceModelEndpoint és ServiceModelOperation) engedélyezve van.

  • ServiceOnly: Csak a ServiceModelService kategóriaszámlálói engedélyezettek. Ez az alapértelmezett érték.

  • Kikapcsolva: A ServiceModel* teljesítményszámlálói le vannak tiltva.

Ha minden WCF-alkalmazáshoz engedélyezni szeretné a teljesítményszámlálókat, a konfigurációs beállításokat a Machine.config fájlban helyezheti el. A teljesítményszámlálók memóriaméretének növeléséről az alábbi szakaszban talál további információt a számítógép teljesítményszámlálóinak megfelelő memória konfigurálásáról.

Ha WCF bővíthetőségi pontokat, például egyéni műveletindítókat használ, saját teljesítményszámlálókat is ki kell adnia. Ennek az az oka, hogy ha bővíthetőségi pontot implementál, előfordulhat, hogy a WCF már nem bocsátja ki a standard teljesítményszámláló adatait az alapértelmezett elérési úton. Ha nem implementálja a manuális teljesítményszámláló-támogatást, előfordulhat, hogy nem látja a várt teljesítményszámláló-adatokat.

A kódban a teljesítményszámlálókat az alábbiak szerint is engedélyezheti:

using System.Configuration;  
using System.ServiceModel.Configuration;  
using System.ServiceModel.Diagnostics;  
Configuration config = ConfigurationManager.OpenExeConfiguration(  
    ConfigurationUserLevel.None);  
ServiceModelSectionGroup sg = ServiceModelSectionGroup.GetSectionGroup(config);  
sg.Diagnostic.PerformanceCounters = PerformanceCounterScope.All;  
config.Save();  

Teljesítményadatok megtekintése

A teljesítményszámlálók által rögzített adatok megtekintéséhez használhatja a Windowshoz tartozó Teljesítményfigyelőt (Perfmon.exe). Az eszközt a Start menüben indíthatja el, majd kattintson a Futtatás gombra, és írja be perfmon.exe a párbeszédpanelt.

Feljegyzés

A teljesítményszámláló-példányok a végpont küldője által az utolsó üzenetek feldolgozása előtt is megjelenhetnek. Ez azt eredményezheti, hogy a teljesítményadatok nem lesznek rögzítve néhány üzenethez.

A teljesítményszámlálók memóriaméretének növelése

A WCF külön megosztott memóriát használ a teljesítményszámláló kategóriáihoz.

Alapértelmezés szerint a különálló megosztott memória a globális teljesítményszámláló memóriájának negyedére van beállítva. Az alapértelmezett globális teljesítményszámláló memória 524 288 bájt. Ezért a három WCF teljesítményszámláló-kategória alapértelmezett mérete körülbelül 128 KB. A gép WCF-alkalmazásainak futásidejű jellemzőitől függően a teljesítményszámláló memóriája kimerülhet. Ha ez történik, a WCF hibát ír az alkalmazás eseménynaplójába. A hiba tartalma azt jelzi, hogy a teljesítményszámláló nincs betöltve, és a bejegyzés a "System.InvalidOperationException: Custom counters file view is out memory" (System.InvalidOperationException: Custom counters file view is out memory) kivételt tartalmazza. Ha a nyomkövetés hibaszinten engedélyezve van, a hiba is nyomon lesz követve. Ha a teljesítményszámláló memóriája kimerül, a WCF-alkalmazások teljesítményszámlálókkal való folyamatos futtatása teljesítménycsökkenést eredményezhet. Ha Ön a gép rendszergazdája, úgy kell konfigurálnia, hogy elegendő memóriát foglaljon le, hogy támogassa a bármikor létező teljesítményszámlálók maximális számát.

A beállításjegyzékben módosíthatja a WCF-kategóriák teljesítményszámláló memóriájának mennyiségét. Ehhez hozzá kell adnia egy új DWORD-értéket FileMappingSize a következő három helyre, és a kívánt értékre kell állítania bájtokban. Indítsa újra a gépet, hogy a módosítások érvénybe léphessenek.

  • HKLM\System\CurrentControlSet\Services\ServiceModelEndpoint 4.0.0.0\Performance

  • HKLM\System\CurrentControlSet\Services\ServiceModelOperation 4.0.0.0\Performance

  • HKLM\System\CurrentControlSet\Services\ServiceModelService 4.0.0.0\Performance

Ha nagy számú objektumot (például ServiceHostot) ártalmatlanít, de a szemétgyűjtésre vár, a PrivateBytes teljesítményszámláló szokatlanul magas számot regisztrál. A probléma megoldásához hozzáadhat saját alkalmazásspecifikus számlálókat, vagy az performanceCounters attribútummal csak szolgáltatásszintű számlálókat engedélyezhet.

Teljesítményszámlálók típusai

A teljesítményszámlálók hatóköre három különböző szintre terjed ki: szolgáltatás, végpont és művelet.

A WMI használatával lekérheti egy teljesítményszámláló-példány nevét. Például:

  • A szolgáltatásszámláló-példány neve a WMI-szolgáltatáspéldány "CounterInstanceName" tulajdonságán keresztül szerezhető be.

  • A végpontszámláló-példány neve a WMI-végpontpéldány "CounterInstanceName" tulajdonságán keresztül kérhető le.

  • A műveletszámláló példányának neve a WMI-végpontpéldány "GetOperationCounterInstanceName" metódusával kérhető le.

A WMI-ről további információt a Windows Management Instrumentation for Diagnostics használata című témakörben talál.

Szolgáltatásteljesítmény-számlálók

A szolgáltatásteljesítmény-számlálók a szolgáltatás egészének viselkedését mérik, és a teljes szolgáltatás teljesítményének diagnosztizálására használhatók. A teljesítményfigyelővel való megtekintéskor a ServiceModelService 4.0.0.0 teljesítményobjektum alatt találhatók. A példányok neve a következő mintával történik:

ServiceName@ServiceBaseAddress

A szolgáltatás hatókörében lévő számlálók a végpontok gyűjteményében lévő számlálóból lesznek összesítve.

A szolgáltatáspéldány-létrehozás teljesítményszámlálói az új InstanceContext létrehozásakor növekednek. Vegye figyelembe, hogy egy új InstanceContext akkor is létrejön, ha nem aktiváló üzenetet kap (meglévő szolgáltatással), vagy amikor egy munkamenetből csatlakozik egy példányhoz, fejezze be a munkamenetet, majd csatlakozzon újra egy másik munkamenetből.

Végpont teljesítményszámlálói

A végpontok teljesítményszámlálói lehetővé teszik az üzenetek fogadásának módját tükröző adatok megtekintését. Ezek a teljesítményfigyelő használatával történő megtekintéskor a ServiceModelEndpoint 4.0.0.0 teljesítményobjektum alatt találhatók. A példányok neve a következő mintával történik:

(ServiceName).(ContractName)@(endpoint listener address)

Az adatok hasonlóak az egyes műveletekhez gyűjtött adatokhoz, de csak a végponton összesítve.

A végpont hatókörében lévő számlálók egy műveletgyűjtemény számlálóiból lesznek összesítve.

Feljegyzés

Ha két végpont azonos szerződésnevekkel és címekkel rendelkezik, a rendszer ugyanarra a számlálópéldányra van leképezve.

Műveleti teljesítményszámlálók

A teljesítményfigyelővel való megtekintéskor a ServiceModelOperation 4.0.0.0 teljesítményobjektum alatt műveleti teljesítményszámlálók találhatók. Minden műveletnek külön példánya van. Vagyis ha egy adott szerződés 10 művelettel rendelkezik, akkor a szerződéshez 10 műveletszámláló példány van társítva. Az objektumpéldányok neve a következő mintával történik:

(ServiceName).(ContractName).(OperationName)@(first endpoint listener address)

Ez a számláló lehetővé teszi a hívás használatának és a művelet végrehajtásának mérését.

Ha a számlálók több hatókörben is láthatók, a magasabb hatókörből gyűjtött adatokat a rendszer az alacsonyabb hatókörökből származó adatokkal összesíti. Egy végponton például Calls a végponton belüli összes művelethívás összege, Calls egy szolgáltatásban pedig a szolgáltatás összes végpontjára irányuló összes hívás összege.

Feljegyzés

Ha ismétlődő műveletnevekkel rendelkezik egy szerződésen, mindkét művelethez csak egy számlálópéldányt kap.

A WCF teljesítményszámlálóinak programozása

Az SDK telepítési mappájában több fájl is telepítve van, így programozott módon érheti el a WCF teljesítményszámlálóit. Ezek a fájlok a következőképpen jelennek meg:

  • _ServiceModelEndpointPerfCounters.vrg
  • _ServiceModelOperationPerfCounters.vrg
  • _ServiceModelServicePerfCounters.vrg
  • _SMSvcHostPerfCounters.vrg
  • _TransactionBridgePerfCounters.vrg

A számlálók programozott eléréséről további információt a Teljesítményszámláló Programozási architektúra című témakörben talál.

Lásd még