Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale şunlar için geçerlidir: ✔️ dotnet-counters sürüm 3.0.47001 ve sonraki sürümler.
Sayaçlar .NET 5 veya üzerini çalıştıran uygulamalardan okunabilir.
Yükleme
İndirmenin ve kullanmanın dotnet-countersüç yolu vardır:
Tek seferlik yürütme (önerilir):
.NET 10.0.100'den başlayarak, kullanarak
dotnet-counterskalıcı yükleme olmadan çalıştırabilirsinizdnx:dnx dotnet-counters [options]Örneğin:
dnx dotnet-counters monitor --process-id 1234Bu yaklaşım, sisteminizi kalıcı olarak değiştirmeden en son sürümü otomatik olarak indirir ve çalıştırır.
dotnet genel aracı:
dotnet-countersen son sürüm sürümünü sık kullanım için yüklemek için dotnet tool install komutunu kullanın:dotnet tool install --global dotnet-countersBu komut, .NET SDK Araçları yolunuza bir
dotnet-countersikili dosya yükler. Bu ikili dosyaya genel olarak yüklenmiş araçları kolayca çağırmak için PATH'inize ekleyebilirsiniz.Doğrudan indirme:
Platformunuzla eşleşen araç yürütülebilir dosyasını indirin:
OS Platform Windows x86 | x64 | Arm | Arm-x64 Linux x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Not
Bir x86 uygulamasında kullanmak dotnet-counters için aracın ilgili x86 sürümünü kullanmanız gerekir.
Özet
dotnet-counters [-h|--help] [--version] <command>
Açıklama
dotnet-counters geçici sistem durumu izleme ve birinci düzey performans araştırması için bir performans izleme aracıdır. API veya EventCounter API aracılığıyla Meter yayımlanan performans sayacı değerlerini gözlemleyebilir. Örneğin, veya PerfViewkullanarak dotnet-trace daha ciddi bir performans araştırmasına geçmeden önce şüpheli bir şey olup olmadığını görmek için CPU kullanımı veya .NET Core uygulamanızda oluşan özel durum oranı gibi öğeleri hızla izleyebilirsiniz.
Seçenekler
--versionYardımcı programın sürümünü
dotnet-countersgörüntüler.-h|--helpKomut satırı yardımlarını gösterir.
Komutlar
| Command |
|---|
| dotnet-counters collect |
| dotnet-counters izleyicisi |
| dotnet-counters ps |
dotnet-counters collect
Seçili sayaç değerlerini düzenli aralıklarla toplayın ve bunları işlem sonrası için belirtilen dosya biçiminde dışarı aktarın.
Özet
dotnet-counters collect [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-port] [--refresh-interval] [--counters <COUNTERS>] [--format] [-o|--output] [-- <command>]
Seçenekler
-p|--process-id <PID>Sayaç verilerini toplama işleminin kimliği.
Not
Linux ve macOS'ta bu seçeneği kullanmak için hedef uygulamanın ve
dotnet-countersaynıTMPDIRortam değişkenini paylaşması gerekir. Aksi takdirde, komut zaman aşımına uğradı.-n|--name <name>Sayaç verilerini toplama işleminin adı.
Not
Linux ve macOS'ta bu seçeneği kullanmak için hedef uygulamanın ve
dotnet-countersaynıTMPDIRortam değişkenini paylaşması gerekir. Aksi takdirde, komut zaman aşımına uğradı.--diagnostic-port <port-address[,(listen|connect)]>İzlenecek işlemle iletişim kurmak için kullanılan tanılama bağlantı noktasını ayarlar.
dotnet-countersve hedef işlemin içindeki .NET çalışma zamanı, bağlantı noktası adresi üzerinde bir dinleme ve diğeri bağlanarak kabul etmelidir.dotnet-countersveya--process-idseçeneklerini kullanarak eklerken veya seçeneğini kullanarak--name-- <command>bir işlem başlatırken doğru bağlantı noktasını otomatik olarak belirler. Genellikle yalnızca gelecekte başlayacak bir işlemi beklerken veya geçerli işlem ad alanının parçası olmayan bir kapsayıcı içinde çalışan bir işlemle iletişim kurarken bağlantı noktasını açıkça belirtmek gerekir.işletim
port-addresssistemine göre farklılık gösterir:- Linux ve macOS - gibi
/foo/tool1.socketbir Unix etki alanı yuvası yolu. - Windows - gibi
\\.\pipe\my_diag_port1adlandırılmış bir kanalın yolu. - Android, iOS ve tvOS - gibi
127.0.0.1:9000bir IP:bağlantı noktası.
Varsayılan olarak,
dotnet-countersbelirtilen adreste dinler. Adresin arkasına ekleyerekdotnet-countersbunun yerine bağlanma isteğinde,connectbulunabilirsiniz. Örneğin,--diagnostic-port /foo/tool1.socket,connectUnix etki alanı yuvasını dinleyen bir .NET çalışma zamanı işlemine/foo/tool1.socketbağlanır.Uygulama başlangıcından izleme sayaçlarını başlatmak için bu seçeneği kullanma hakkında bilgi için bkz. Tanılama bağlantı noktasını kullanma.
- Linux ve macOS - gibi
--refresh-interval <SECONDS>Görüntülenen sayaçların güncelleştirilmesi arasındaki gecikme süresi saniye sayısı
--counters <COUNTERS>Virgülle ayrılmış sayaç listesi. Sayaçlar belirtilebilir
provider_name[:counter_name].provider_nameuygun bir sayaç listesi olmadan kullanılıyorsa, sağlayıcının tüm sayaçları gösterilir. Sağlayıcı ve sayaç adlarını bulmak için bkz. yerleşik ölçümler. EventCounters için EventSource'unprovider_nameadı, Ölçümlerprovider_nameiçin ise Ölçüm'ün adıdır.--format <csv|json>Dışarı aktarılacak biçim. Şu anda kullanılabilir: csv, json.
-o|--output <output>Çıktı dosyasının adı.
-- <command>Koleksiyon yapılandırma parametrelerinden sonra, kullanıcı bir .NET uygulaması başlatmak için bir komut ekleyebilir
--.dotnet-counterssağlanan komutla bir işlem başlatır ve istenen ölçümleri toplar. Bu genellikle uygulamanın başlangıç yolu için ölçümleri toplamak için yararlıdır ve ana giriş noktasından önce veya kısa süre sonra gerçekleşen sorunları tanılamak veya izlemek için kullanılabilir.Not
Bu seçeneğin kullanılması, araca geri iletişim kuran ilk .NET işlemini izler, yani komutunuz birden çok .NET uygulaması başlatırsa yalnızca ilk uygulamayı toplar. Bu nedenle, bu seçeneği bağımsız uygulamalarda veya seçeneğini kullanarak kullanmanız
dotnet exec <app.dll>önerilir.Not
aracılığıyla
dotnet-countersbir .NET yürütülebilir dosyasını başlatırsanız, girişi/çıkışı yeniden yönlendirilir ve stdin/stdout dosyasıyla etkileşim kuramazsınız. Hem aracı hem de alt işlemi güvenli bir şekilde sonlandırmak için Ctrl+C veya SIGTERM aracılığıyla araçdan çıkabilirsiniz. Alt işlem araçdan önce çıkarsa, araç da çıkar. stdin/stdout kullanmanız gerekiyorsa seçeneğini kullanabilirsiniz--diagnostic-port. Daha fazla bilgi için bkz. Tanılama bağlantı noktasını kullanma.
Not
kullanarak dotnet-countersölçümleri toplamak için hedef işlemi çalıştıran kullanıcıyla aynı kullanıcı veya kök olarak çalıştırılması gerekir. Aksi takdirde araç hedef işlemle bağlantı kuramaz.
Örnekler
3 saniyelik yenileme aralığında tüm sayaçları toplayın ve çıkış olarak bir csv oluşturun:
> dotnet-counters collect --process-id 1902 --refresh-interval 3 --format csv --counters is unspecified. Monitoring System.Runtime counters by default. Starting a counter session. Press Q to quit.Alt işlem olarak başlayın
dotnet mvc.dllve başlangıçtan çalışma zamanı sayaçlarını ve ASP.NET Core Hosting sayaçlarını toplamaya başlayın ve bunu bir JSON çıkışı olarak kaydedin:> dotnet-counters collect --format json --counters System.Runtime,Microsoft.AspNetCore.Hosting -- dotnet mvc.dll Starting a counter session. Press Q to quit. File saved to counter.json
dotnet-counters izleyicisi
Seçili sayaçların düzenli aralıklarla yenilenen değerlerini görüntüler.
Özet
dotnet-counters monitor [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-port] [--refresh-interval] [--counters] [-- <command>]
Seçenekler
-p|--process-id <PID>İzlenecek işlemin kimliği.
-n|--name <name>İzlenecek işlemin adı.
--diagnostic-portOluşturulacak tanılama bağlantı noktasının adı. Uygulama başlangıcından izleme sayaçlarını başlatmak için bu seçeneğin nasıl kullanılacağını öğrenmek için tanılama bağlantı noktasını kullanma konusuna bakın.
--refresh-interval <SECONDS>Görüntülenen sayaçların güncelleştirilmesi arasındaki gecikme süresi saniye sayısı
--counters <COUNTERS>Virgülle ayrılmış sayaç listesi. Sayaçlar belirtilebilir
provider_name[:counter_name].provider_nameuygun bir sayaç listesi olmadan kullanılıyorsa, sağlayıcının tüm sayaçları gösterilir. Sağlayıcı ve sayaç adlarını bulmak için bkz. yerleşik ölçümler. EventCounters için EventSource'unprovider_nameadı, Ölçümlerprovider_nameiçin ise Ölçüm'ün adıdır.-- <command>Koleksiyon yapılandırma parametrelerinden sonra, bir .NET uygulaması başlatmak için komutun sonuna ekleyebilirsiniz
--.dotnet-counterskomutuyla bir işlem başlatır ve istenen ölçümleri izler. Bu genellikle uygulamanın başlangıç yolu için ölçümleri toplamak için yararlıdır ve ana giriş noktasından önce veya kısa süre sonra gerçekleşen sorunları tanılamak veya izlemek için kullanılabilir.Not
Bu seçeneğin kullanılması, araca geri iletişim kuran ilk .NET işlemini izler, yani komutunuz birden çok .NET uygulaması başlatırsa yalnızca ilk uygulamayı toplar. Bu nedenle, bu seçeneği bağımsız uygulamalarda veya seçeneğini kullanarak kullanmanız
dotnet exec <app.dll>önerilir.Not
aracılığıyla
dotnet-countersbir .NET yürütülebilir dosyasının başlatılması giriş/çıkışını yeniden yönlendirir ve stdin/stdout ile etkileşim kuramazsınız. Hem aracı hem de alt işlemi güvenli bir şekilde sonlandırmak için Ctrl+C veya SIGTERM aracılığıyla araçdan çıkabilirsiniz. Alt işlem araçdan önce çıkarsa, araç da çıkar. stdin/stdout kullanmanız gerekiyorsa seçeneğini kullanabilirsiniz--diagnostic-port. Daha fazla bilgi için bkz. Tanılama bağlantı noktasını kullanma.
Not
Linux ve macOS'ta bu komut hedef uygulamanın ve dotnet-counters aynı TMPDIR ortam değişkenini paylaşmasını bekler.
Not
kullanarak dotnet-countersölçümleri izlemek için hedef işlemi çalıştıran kullanıcıyla aynı kullanıcı veya kök olarak çalıştırılması gerekir.
Not
Aşağıdakine benzer bir hata iletisi görürseniz, [ERROR] System.ComponentModel.Win32Exception (299): A 32 bit processes cannot access modules of a 64 bit process.hedef işleme karşı eşleşmeyen bitlik içeren bir hata iletisi kullanmaya dotnet-counters çalışıyorsunuz demektir. Yükleme bağlantısında aracın doğru bitliğini indirdiğinizden emin olun.
Örnekler
Tüm sayaçları
System.Runtime3 saniyelik bir yenileme aralığında izleyin:> dotnet-counters monitor --process-id 1902 --refresh-interval 3 --counters System.Runtime Press p to pause, r to resume, q to quit. Status: Running Name Current Value [System.Runtime] dotnet.assembly.count ({assembly}) 115 dotnet.gc.collections ({collection}) gc.heap.generation ------------------ gen0 5 gen1 1 gen2 1 dotnet.gc.heap.total_allocated (By) 1.6947e+08 dotnet.gc.last_collection.heap.fragmentation.size (By) gc.heap.generation ------------------ gen0 0 gen1 348,248 gen2 0 loh 32 poh 0 dotnet.gc.last_collection.heap.size (By) gc.heap.generation ------------------ gen0 0 gen1 18,010,920 gen2 5,065,600 loh 98,384 poh 3,407,048 dotnet.gc.last_collection.memory.committed_size (By) 66,842,624 dotnet.gc.pause.time (s) 0.05 dotnet.jit.compilation.time (s) 1.317 dotnet.jit.compiled_il.size (By) 574,886 dotnet.jit.compiled_methods ({method}) 6,008 dotnet.monitor.lock_contentions ({contention}) 194 dotnet.process.cpu.count ({cpu}) 16 dotnet.process.cpu.time (s) cpu.mode -------- system 4.953 user 6.266 dotnet.process.memory.working_set (By) 1.3217e+08 dotnet.thread_pool.queue.length ({work_item}) 0 dotnet.thread_pool.thread.count ({thread}) 133 dotnet.thread_pool.work_item.count ({work_item}) 71,188 dotnet.timer.count ({timer}) 124Not
Uygulama .NET sürüm 8 veya üzerini kullanıyorsa, System.Runtime Meter bu sürümlerde yoktur ve
dotnet-countersbunun yerine eski System.Runtime EventCounters'ı görüntülemek için geri döner. Burada gösterildiği gibi kullanıcı arabirimi biraz farklı görünür.[System.Runtime] % Time in GC since last GC (%) 0 Allocation Rate (B / 1 sec) 5,376 CPU Usage (%) 0 Exception Count (Count / 1 sec) 0 GC Fragmentation (%) 48.467 GC Heap Size (MB) 0 Gen 0 GC Count (Count / 1 sec) 1 Gen 0 Size (B) 24 Gen 1 GC Count (Count / 1 sec) 1 Gen 1 Size (B) 24 Gen 2 GC Count (Count / 1 sec) 1 Gen 2 Size (B) 272,000 IL Bytes Jitted (B) 19,449 LOH Size (B) 19,640 Monitor Lock Contention Count (Count / 1 sec) 0 Number of Active Timers 0 Number of Assemblies Loaded 7 Number of Methods Jitted 166 POH (Pinned Object Heap) Size (B) 24 ThreadPool Completed Work Item Count (Count / 1 sec) 0 ThreadPool Queue Length 0 ThreadPool Thread Count 2 Working Set (MB) 19yalnızca çöp toplamalarını ve atık toplama yığın ayırmayı izleyin
System.Runtime:> dotnet-counters monitor --process-id 1902 --counters System.Runtime[dotnet.gc.collections,dotnet.gc.heap.total_allocated] Press p to pause, r to resume, q to quit. Status: Running Name Current Value [System.Runtime] dotnet.gc.collections ({collection}) gc.heap.generation ------------------ gen0 0 gen1 0 gen2 0 dotnet.gc.heap.total_allocated (By) 9,943,384Kullanıcı tanımlı
EventCounterdeğerinden değerleri izleyinEventSource. Daha fazla bilgi için bkz . Öğretici: .NET Core'da EventCounters kullanarak performansı ölçme.> dotnet-counters monitor --process-id 1902 --counters Samples-EventCounterDemos-Minimal Press p to pause, r to resume, q to quit. request 100Başlangıçtan yüklenen derlemelerin #'sini başlatın
my-aspnet-server.exeve izleyin:> dotnet-counters monitor --counters System.Runtime[dotnet.assembly.count] -- my-aspnet-server.exe Press p to pause, r to resume, q to quit. Status: Running Name Current Value [System.Runtime] dotnet.assembly.count ({assembly}) 11komut satırı bağımsız değişkenleriyle ve
my-aspnet-server.exekomutarg1satırı bağımsız değişkenleriyle başlatınarg2ve başlangıçtan çalışma kümesini ve GC yığın boyutunu izleyin:> dotnet-counters monitor --counters System.Runtime[dotnet.process.memory.working_set,dotnet.gc.last_collection.heap.size] -- my-aspnet-server.exe arg1 arg2Name Current Value [System.Runtime] dotnet.gc.last_collection.heap.size (By) gc.heap.generation ------------------ gen0 560 gen1 462,720 gen2 0 loh 0 poh 8,184 dotnet.process.memory.working_set (By) 48,431,104
dotnet-counters ps
tarafından dotnet-countersizleyebileceğiniz dotnet işlemlerini listeler.
dotnet-counters sürüm 6.0.320703 ve üzeri, varsa her işlemin başlatıldığı komut satırı bağımsız değişkenlerini de görüntüler.
Özet
dotnet-counters ps [-h|--help]
Örnek
komutunu dotnet run --configuration Releasekullanarak uzun süre çalışan bir uygulama başlattığınızı varsayalım. Başka bir pencerede komutunu çalıştırırsınız dotnet-counters ps . Gördüğünüz çıkış aşağıdaki gibidir. Varsa, komut satırı bağımsız değişkenleri 6.0.320703 ve sonraki sürümlerde dotnet-counters gösterilir.
> dotnet-counters ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
Tanılama bağlantı noktasını kullanma
Tanılama bağlantı noktası , uygulama başlangıcından sayaçları izlemeye veya toplamaya başlamanızı sağlayan bir çalışma zamanı özelliğidir. Bunu kullanarak dotnet-countersyapmak için, önceki örneklerde açıklandığı gibi kullanabilir dotnet-counters <collect|monitor> -- <command> veya seçeneğini kullanabilirsiniz --diagnostic-port .
dotnet-counters <collect|monitor> -- <command> Uygulamayı alt işlem olarak başlatmak için kullanmak, uygulamayı başlangıçtan itibaren hızlı bir şekilde izlemenin en kolay yoludur.
Ancak, izlenen uygulamanın ömrü üzerinde daha iyi bir denetim elde etmek istediğinizde (örneğin, uygulamayı yalnızca ilk 10 dakika izleyin ve yürütmeye devam edin) veya CLI kullanarak uygulamayla etkileşime geçmeniz gerekiyorsa, seçeneğini kullanarak --diagnostic-port hem izlenen dotnet-countershedef uygulamayı hem de 'yi denetlemenize olanak tanır.
Aşağıdaki komut
dotnet-countersadlımyport.sockbir tanılama yuvası oluşturur ve bağlantı bekler.dotnet-counters collect --diagnostic-port myport.sockÇıktı:
Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sockAyrı bir konsolda, ortam değişkeni
DOTNET_DiagnosticPortsçıkıştakidotnet-countersdeğere ayarlanmış şekilde hedef uygulamayı başlatın.export DOTNET_DiagnosticPorts=/home/user/myport.sock ./my-dotnet-app arg1 arg2Bu, üzerinde
dotnet-counterssayaçları toplamaya başlamanızı sağlarmy-dotnet-app:Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=myport.sock Starting a counter session. Press Q to quit.Önemli
dotnet CLI'sı uygulamanız olmayan ve uygulamanızdan önce bağlanabilen
dotnet-countersbirçok alt işlem ortaya çıkarabileceği ve uygulamanızı çalışma zamanında askıya alınmış durumda bırakabileceği için uygulamanızı iledotnet runbaşlatmak sorunlu olabilir. Doğrudan uygulamanın bağımsız bir sürümünü kullanmanız veya uygulamayı başlatmak için kullanmanızdotnet execönerilir.