Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Windows Communication Foundation (WCF) mencakup serangkaian penghitung kinerja yang besar untuk membantu Anda mengukur performa aplikasi Anda.
Mengaktifkan Penghitung kinerja
Anda dapat mengaktifkan penghitung kinerja untuk layanan WCF melalui file konfigurasi app.config layanan WCF sebagai berikut:
<configuration>
<system.serviceModel>
<diagnostics performanceCounters="All" />
</system.serviceModel>
</configuration>
Atribut performanceCounters dapat diatur untuk mengaktifkan jenis penghitung kinerja tertentu. Nilai yang valid adalah
Semua: Semua penghitung kategori (ServiceModelService, ServiceModelEndpoint, dan ServiceModelOperation) diaktifkan.
ServiceOnly: Hanya penghitung kategori ServiceModelService yang diaktifkan. Ini adalah nilai default.
Nonaktif: Penghitung kinerja ServiceModel* dinonaktifkan.
Jika Anda ingin mengaktifkan penghitung kinerja untuk semua aplikasi WCF, Anda dapat menempatkan pengaturan konfigurasi dalam file Machine.config. Silakan lihat bagian Meningkatkan Ukuran Memori untuk Penghitung Kinerja di bawah ini untuk informasi lebih lanjut tentang mengonfigurasi memori yang cukup untuk penghitung kinerja pada komputer Anda.
Jika Anda menggunakan titik ekstensibilitas WCF seperti pemanggil operasi kustom, Anda juga harus memancarkan penghitung kinerja Anda sendiri. Ini karena jika Anda menerapkan titik ekstensibilitas, WCF mungkin tidak lagi memancarkan data penghitung kinerja standar di jalur default. Jika Anda tidak menerapkan dukungan penghitung kinerja manual, Anda mungkin tidak melihat data penghitung kinerja yang Anda harapkan.
Anda juga dapat mengaktifkan penghitung kinerja dalam kode Anda sebagai berikut,
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();
Menampilkan Data Performa
Untuk melihat data yang diambil oleh penghitung kinerja, Anda dapat menggunakan Monitor Performa (Perfmon.exe) yang disertakan dengan Windows. Anda dapat meluncurkan alat ini dengan masuk ke Mulai, dan klik Jalankan dan ketik perfmon.exe dalam kotak dialog.
Catatan
Instans penghitung kinerja dapat dirilis sebelum pesan terakhir diproses oleh dispatcher titik akhir. Hal ini dapat mengakibatkan data performa tidak diambil untuk beberapa pesan.
Meningkatkan Ukuran Memori untuk Penghitung Kinerja
WCF menggunakan memori bersama terpisah untuk kategori penghitung kinerjanya.
Secara default, memori bersama terpisah diatur ke seperempat ukuran memori penghitung kinerja global. Memori penghitung kinerja global default adalah 524.288 byte. Oleh karena itu, tiga kategori penghitung kinerja WCF memiliki ukuran default masing-masing sekitar 128KB. Tergantung pada karakteristik runtime bahasa umum aplikasi WCF pada komputer, memori penghitung kinerja mungkin habis. Ketika ini terjadi, WCF menulis kesalahan ke log peristiwa aplikasi. Konten kesalahan menyatakan bahwa penghitung kinerja tidak dimuat, dan entri berisi pengecualian "System.InvalidOperationException: Tampilan file penghitung kustom kehabisan memori." Jika pelacakan diaktifkan pada tingkat kesalahan, kegagalan ini juga dilacak. Jika memori penghitung kinerja habis, terus menjalankan aplikasi WCF Anda dengan penghitung kinerja diaktifkan dapat mengakibatkan penurunan performa. Jika Anda adalah administrator komputer, Anda harus mengonfigurasinya untuk mengalokasikan cukup memori untuk mendukung jumlah maksimum penghitung kinerja yang dapat ada kapan saja.
Anda dapat mengubah jumlah memori penghitung kinerja untuk kategori WCF dalam registri. Untuk melakukannya, Anda perlu menambahkan nilai DWORD baru bernama FileMappingSize ke tiga lokasi berikut, dan mengaturnya ke nilai yang diinginkan dalam byte. Mulai ulang komputer Anda sehingga perubahan ini diterapkan.
HKLM\System\CurrentControlSet\Services\ServiceModelEndpoint 4.0.0.0\Performance
HKLM\System\CurrentControlSet\Services\ServiceModelEndpoint 4.0.0.0\Performance
HKLM\System\CurrentControlSet\Services\ServiceModelEndpoint 4.0.0.0\Performance
Ketika sejumlah besar objek (misalnya, ServiceHost) dibuang tetapi menunggu untuk dikumpulkan sampah, PrivateBytes penghitung kinerja akan mendaftarkan angka yang luar biasa tinggi. Untuk mengatasi masalah ini, Anda dapat menambahkan penghitung khusus aplikasi Anda sendiri, atau menggunakan performanceCounters atribut untuk hanya mengaktifkan penghitung tingkat layanan.
Jenis Penghitung Kinerja
Penghitung kinerja dicakup ke tiga tingkat yang berbeda: Layanan, Titik Akhir, dan Operasi.
Anda dapat menggunakan WMI untuk mengambil nama instans penghitung kinerja. Contohnya,
Nama instans penghitung layanan dapat diperoleh melalui properti "CounterInstanceName" instans Layanan WMI.
Nama instans penghitung titik akhir dapat diperoleh melalui properti "CounterInstanceName" instans Titik Akhir WMI.
Nama instans penghitung operasi dapat diperoleh melalui metode "GetOperationCounterInstanceName" instans WMI Titik akhir.
Untuk informasi selengkapnya tentang WMI, lihat Menggunakan Instrumentasi Manajemen Windows untuk Diagnostik.
Penghitung Kinerja Layanan
Penghitung performa layanan mengukur perilaku layanan secara keseluruhan dan dapat digunakan untuk mendiagnosis performa layanan secara keseluruhan. Mereka dapat ditemukan di bawah ServiceModelService 4.0.0.0 objek performa saat melihat dengan Monitor Performa. Instans diberi nama menggunakan pola berikut:
ServiceName@ServiceBaseAddress
Penghitung dalam cakupan layanan diagregasi dari penghitung dalam kumpulan titik akhir.
Penghitung kinerja untuk pembuatan instans layanan bertahap saat InstanceContext baru dibuat. Perhatikan bahwa InstanceContext baru dibuat bahkan ketika Anda menerima pesan yang tidak mengaktifkan (dengan layanan yang ada), atau saat Anda terhubung ke instans dari satu sesi, akhiri sesi, lalu sambungkan kembali dari sesi lain.
Penghitung kinerja titik akhir
Penghitung kinerja titik akhir memungkinkan Anda melihat data yang mencerminkan bagaimana titik akhir menerima pesan. Mereka dapat ditemukan di bawah ServiceModelEndpoint 4.0.0.0 objek performa saat melihat dengan Monitor Performa. Instans diberi nama menggunakan pola berikut:
(ServiceName).(ContractName)@(endpoint listener address)
Data ini mirip dengan apa yang dikumpulkan untuk operasi individual, tetapi hanya dikumpulkan di seluruh titik akhir.
Penghitung dalam cakupan titik akhir diagregasi dari penghitung dalam kumpulan operasi.
Catatan
Jika dua titik akhir memiliki nama dan alamat kontrak yang identik, titik akhir tersebut dipetakan ke instans penghitung yang sama.
Penghitung kinerja operasi
Penghitung kinerja operasi ditemukan di bawah ServiceModelOperation 4.0.0.0 objek performa saat melihat dengan Monitor Performa. Setiap operasi memiliki instans individual. Artinya, jika kontrak tertentu memiliki 10 operasi, 10 instans penghitung operasi akan dikaitkan dengan kontrak tersebut. Instans objek diberi nama menggunakan pola berikut:
(ServiceName).(ContractName).(OperationName)@(first endpoint listener address)
Penghitung ini memungkinkan Anda mengukur bagaimana panggilan digunakan dan sejauh mana performa operasi.
Saat penghitung terlihat di beberapa cakupan, data yang dikumpulkan dari cakupan yang lebih tinggi dikumpulkan dengan data dari cakupan yang lebih rendah. Misalnya, Calls di titik akhir mewakili jumlah semua panggilan operasi dalam titik akhir; Calls pada layanan mewakili jumlah semua panggilan ke semua titik akhir dalam layanan.
Catatan
Jika Anda memiliki nama operasi duplikat pada kontrak, Anda hanya mendapatkan satu instans penghitung untuk kedua operasi.
Memprogram Penghitung Kinerja WCF
Beberapa file diinstal di folder penginstalan SDK sehingga Anda dapat mengakses penghitung kinerja WCF secara terprogram. File-file ini dicantumkan sebagai berikut:
- _ServiceModelEndpointPerfCounters.vrg
- _ServiceModelOperationPerfCounters.vrg
- _ServiceModelServicePerfCounters.vrg
- _SMSvcHostPerfCounters.vrg
- _TransactionBridgePerfCounters.vrg
Untuk informasi selengkapnya tentang cara mengakses penghitung secara terprogram, lihat Arsitektur Pemrograman Penghitung Kinerja.