Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
.NET 8'den .NET 11'e Diagnostics'te Değişenler: System.Runtime Meter, Yeni dotnet-trace Profile'ları, collect-linux, Runtime Async Stack'leri ve In-Process Crash Report
.NET 9 eski EventCounter'ları System.Runtime Meter'ıyla değiştirdi, .NET 10 dotnet-trace'in varsayılanlarını ve collect-linux'u getirdi, .NET 11 ise kayıpsız event tamponu, runtime async ve process içi crash report ekledi. Eski ve yeni metric adlarının eşleme tablosunu veriyor, cpu-sampling ve Block modu hatalarını, runtime async'in askıya alma öncesi ve sonrası stack'lerini ve crash report çıktısını .NET 10 ve 11'de gerçek koşularla gösteriyoruz.
Production'da Diagnostics: dotnet-monitor, Collection Rule'lar, Kubernetes Sidecar ve Continuous Profiling
dotnet-monitor, trace, gcdump ve dump'ı kimsenin container'a girmesine gerek bırakmadan bir HTTP API ve collection rule'larla toplar; rule'lar için Listen modu, güvenlik için localhost'a bağlı API, API key ve sınırlı egress gerekir. Bookstore'u kind'de sidecar'la çalıştırıyor, yavaş rapor isteklerinde ve kendi meter'ımızda tetiklenen kuralları, Limits'in throttling'ini ve suspend/nosuspend farkını ölçüyor, OpenTelemetry Profiles'ın alpha durumuna bakıyoruz.
.NET Diagnostics Haritası: Hangi Soruya Hangi Araç? EventPipe, Diagnostic Port ve Güvenli Toplama
Araç seçimi sorudan başlar: bir şey ters mi diye dotnet-counters, zaman nereye gidiyor diye dotnet-trace, bellekte ne kalıyor diye dotnet-gcdump, process'in tam hâli için dotnet-dump. EventPipe, ETW ve Linux'ta user_events farkını, diagnostic port'un TMPDIR ve kullanıcı şartını, container'da sidecar'ı, dnx ve tool manifest ile kurulumu, trace'in gerçek overhead'ini ve dosya boyutunu Bookstore lab'ında ölçüyoruz.