Aracılığıyla paylaş


WCF Performans Sayaçları

Windows Communication Foundation (WCF), uygulamanızın performansını ölçmenize yardımcı olacak büyük bir performans sayaçları kümesi içerir.

Performans Sayaçlarını Etkinleştirme

WCF hizmetinin app.config yapılandırma dosyası aracılığıyla wcf hizmeti için performans sayaçlarını aşağıdaki gibi etkinleştirebilirsiniz:

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

performanceCounters Öznitelik, belirli bir performans sayacı türünü etkinleştirmek için ayarlanabilir. Geçerli değerler şunlardır:

  • Tümü: Tüm kategori sayaçları (ServiceModelService, ServiceModelEndpoint ve ServiceModelOperation) etkinleştirilir.

  • ServiceOnly: Yalnızca ServiceModelService kategori sayaçları etkinleştirilir. Bu varsayılan değerdir.

  • Kapalı: ServiceModel* performans sayaçları devre dışı bırakıldı.

Tüm WCF uygulamaları için performans sayaçlarını etkinleştirmek istiyorsanız, yapılandırma ayarlarını Machine.config dosyasına yerleştirebilirsiniz. Makinenizdeki performans sayaçları için yeterli belleği yapılandırma hakkında daha fazla bilgi için lütfen aşağıdaki Performans Sayaçları için Bellek Boyutunu Artırma bölümüne bakın.

Özel işlem çağıranları gibi WCF genişletilebilirlik noktalarını kullanıyorsanız, kendi performans sayaçlarınızı da yaymalısınız. Bunun nedeni, bir genişletilebilirlik noktası uygularsanız WCF'nin artık standart performans sayacı verilerini varsayılan yolda yaymayabileceğidir. El ile performans sayacı desteği uygulamıyorsanız, beklediğiniz performans sayacı verilerini göremeyebilirsiniz.

Ayrıca kodunuzda performans sayaçlarını aşağıdaki gibi etkinleştirebilirsiniz:

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();  

Performans Verilerini Görüntüleme

Performans sayaçları tarafından yakalanan verileri görüntülemek için Windows ile birlikte gelen Performans İzleyicisi (Perfmon.exe) kullanabilirsiniz. Başlat'a gidip Çalıştır'a tıklayıp iletişim kutusuna yazarak perfmon.exe bu aracı başlatabilirsiniz.

Not

Performans sayacı örnekleri, uç nokta dağıtıcısı tarafından son iletiler işlenmeden önce serbest bırakılabilir. Bu, performans verilerinin birkaç ileti için yakalanmamasıyla sonuçlanabilir.

Performans Sayaçları için Bellek Boyutunu Artırma

WCF, performans sayacı kategorileri için ayrı paylaşılan bellek kullanır.

Varsayılan olarak, ayrı paylaşılan bellek, genel performans sayacı belleğinin dörtte biri olarak ayarlanır. Varsayılan genel performans sayacı belleği 524.288 bayttır. Bu nedenle, üç WCF performans sayacı kategorisinin varsayılan boyutu yaklaşık 128 KB'dir. Bir makinedeki WCF uygulamalarının çalışma zamanı özelliklerine bağlı olarak performans sayacı belleği tükenebilir. Bu durumda, WCF uygulama olay günlüğüne bir hata yazar. Hatanın içeriği bir performans sayacının yüklenmediğini belirtir ve girdi "System.InvalidOperationException: Özel sayaçlar dosya görünümü bellek yetersiz" özel durumunu içerir. İzleme hata düzeyinde etkinleştirilirse, bu hata da izlenmiş olur. Performans sayacı belleği tükenirse, performans sayaçları etkin wcf uygulamalarınızı çalıştırmaya devam etmek performans düşüşüyle sonuçlanabilir. Makinenin yöneticisiyseniz, herhangi bir zamanda var olabilecek en fazla performans sayacı sayısını desteklemek için yeterli bellek ayıracak şekilde yapılandırmanız gerekir.

Kayıt defterindeki WCF kategorileri için performans sayacı belleği miktarını değiştirebilirsiniz. Bunu yapmak için, aşağıdaki üç konuma adlı FileMappingSize yeni bir DWORD değeri eklemeniz ve bayt cinsinden istenen değere ayarlamanız gerekir. Bu değişikliklerin etkili olması için makinenizi yeniden başlatın.

  • 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

Çok sayıda nesne (örneğin, ServiceHost) atıldığında ancak çöp toplanmayı beklediğinde PrivateBytes , performans sayacı olağan dışı yüksek bir sayı kaydeder. Bu sorunu çözmek için kendi uygulamaya özgü sayaçlarınızı ekleyebilir veya özniteliğini performanceCounters kullanarak yalnızca hizmet düzeyi sayaçları etkinleştirebilirsiniz.

Performans Sayacı Türleri

Performans sayaçlarının kapsamı üç farklı düzeye göre belirlenmiştir: Hizmet, Uç Nokta ve İşlem.

Wmi kullanarak bir performans sayacı örneğinin adını alabilirsiniz. Örneğin,

  • Hizmet sayacı örneği adı WMI Hizmeti örneğinin "CounterInstanceName" özelliği aracılığıyla alınabilir.

  • Uç nokta sayacı örneği adı WMI Uç Nokta örneğinin "CounterInstanceName" özelliği aracılığıyla alınabilir.

  • İşlem sayacı örneği adı WMI Uç Noktası örneğinin "GetOperationCounterInstanceName" yöntemi aracılığıyla alınabilir.

WMI hakkında daha fazla bilgi için bkz . Tanılama için Windows Yönetim Araçları kullanma.

Hizmet performans sayaçları

Hizmet performansı sayaçları hizmet davranışını bir bütün olarak ölçer ve hizmetin tamamının performansını tanılamak için kullanılabilir. Performans İzleyicisi ile görüntülerken performans nesnesinin ServiceModelService 4.0.0.0 altında bulunabilirler. Örnekler aşağıdaki desen kullanılarak adlandırılır:

ServiceName@ServiceBaseAddress

Hizmet kapsamındaki bir sayaç, bir uç nokta koleksiyonundaki sayaçtan toplanır.

Yeni bir InstanceContext oluşturulduğunda hizmet örneği oluşturma için performans sayaçları artırılır. Etkinleştirilmeyen bir ileti aldığınızda (mevcut bir hizmetle) veya bir oturumdan bir örneğe bağlandığınızda, oturumu sonlandırdığınızda ve sonra başka bir oturumdan yeniden bağlandığınızda bile yeni bir InstanceContext oluşturulduğunu unutmayın.

Uç nokta performans sayaçları

Uç nokta performans sayaçları, uç noktanın iletileri nasıl kabul ettiğinizi yansıtan verilere bakmanızı sağlar. Bunlar, Performans İzleyicisi kullanılarak görüntülenirken performans nesnesinin altında ServiceModelEndpoint 4.0.0.0 bulunabilir. Örnekler aşağıdaki desen kullanılarak adlandırılır:

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

Veriler, tek tek işlemler için toplanan verilere benzer, ancak yalnızca uç nokta genelinde toplanır.

Uç nokta kapsamındaki bir sayaç, bir işlem koleksiyonundaki sayaçlardan toplanır.

Not

İki uç noktanın aynı sözleşme adları ve adresleri varsa, bunlar aynı sayaç örneğine eşlenir.

İşlem performansı sayaçları

Performans İzleyicisi ile görüntülerken performans nesnesinin altında ServiceModelOperation 4.0.0.0 işlem performans sayaçları bulunur. Her işlemin ayrı bir örneği vardır. Yani, belirli bir sözleşmede 10 işlem varsa, bu sözleşmeyle 10 işlem sayacı örneği ilişkilendirilir. Nesne örnekleri aşağıdaki desen kullanılarak adlandırılır:

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

Bu sayaç, çağrının nasıl kullanıldığını ve işlemin ne kadar iyi performans sergilemekte olduğunu ölçmenizi sağlar.

Sayaçlar birden çok kapsamda görünür olduğunda, daha yüksek bir kapsamdan toplanan veriler daha düşük kapsamlardan alınan verilerle toplanır. Örneğin, Calls bir uç noktada uç nokta içindeki tüm işlem çağrılarının toplamını temsil eder; Calls bir hizmette, hizmet içindeki tüm uç noktalara yapılan tüm çağrıların toplamını temsil eder.

Not

Bir sözleşmede yinelenen işlem adlarınız varsa, her iki işlem için de yalnızca bir sayaç örneği alırsınız.

WCF Performans Sayaçlarını Programlama

WCF performans sayaçlarına program aracılığıyla erişebilmeniz için SDK yükleme klasörüne birkaç dosya yüklenir. Bu dosyalar aşağıdaki gibi listelenir:

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

Sayaçlara program aracılığıyla erişme hakkında daha fazla bilgi için bkz . Performans Sayacı Programlama Mimarisi.

Ayrıca bkz.