Road to .NET 6: migration story of hope and despair
summary
Case study of migrating a high‑load real‑time service from .NET Framework to .NET 5/6 on Linux handling over 200k rps, with concrete fixes and measurements: use of perf profiler and flame graphs, dotnet‑dump and dotnet‑stack to find blocking equals comparisons, replacement of legacy HTTP APIs with HttpClient and HTTP client factory, fixes for DNS resolution and a custom resolver, mitigation of threadpool starvation and port exhaustion, use of Polly then a custom bulkhead policy, nginx and iptables tuning, one machine reaching ~38–39k rps and 50% less electricity.
AI-written summary · about
chapters (15)
- 0:00Start
- 1:41Krzysztof Stolarz
- 2:28what
- 6:50code migration
- 8:22first try
- 9:24CPU core utilization
- 11:11looking better
- 11:32excessive TIME_WAIT
- 14:21unstable performance
- 26:14#5 HttpClient is tricky
- 32:34deadlock 2
- 35:28HttpClient still tricky
- 42:34Et tu, IHttpClientFactory?
- 44:20final results
- 44:53lessons learned
related talks
41mASP.NET Core in Production: Lessons Learned
01h 00mMoving 17 years of old legacy code and sites into the Cloud
58mUpgrade any .NET applications with the latest .NET stack.
35m.Net Framework to .Net Core Microservices With Windows and Linux Containers
26mMaking internets great again - a story of working with legacy code
52m.NET Is Dead. Long Live .NET!
55mKeynote: The Future of Modern Application Development with .NET and Azure
44mHow Real is this Cross Platform .NET Thing Really?
