我们经常会遇到性能问题,比如内存、CPU使用率过高,一般我们尽量在本机开发的时候,就能够找出这些问题并且优化掉它,所以,这里就收藏一下官方的优化方法。
ASP.NET Core 中的内存管理和垃圾回收(GC)
如何在 .NET Core 中使用垃圾回收(GC)
GC 分配堆段,其中每个段都是一系列连续的内存。 位于堆中的对象归类为三个代之一:0、1或2。 该代确定 GC 尝试释放应用程序不再引用的托管对象上内存的频率。 较低编号的生成更为频繁。
根据对象的生存期,将对象从一代移到另一代。 随着对象的运行时间较长,它们会移到较高的代中。 如前所述,较高的版本是不太常见的垃圾回收。 短期生存期的对象始终保留在第0代中。 例如,在 web 请求过程中引用的对象的生存期很短。 应用程序级别单一实例通常迁移到第2代。
当 ASP.NET Core 应用启动时,GC:
- 为初始堆段保留一些内存。
- 加载运行时,提交一小部分内存。
出于性能方面的原因,上述内存分配已完成。 性能优势来自连续内存中的堆段。
Visual Studio 诊断工具
分析和诊断工具内置到 Visual Studio 是开始调查性能问题的好时机。 这些工具是功能强大且方便地从 Visual Studio 开发环境使用。 此工具允许在 ASP.NET Core 应用中 CPU 使用情况、 内存使用情况和性能事件的分析。 正在内置,可以在开发时轻松分析。
中提供了详细信息Visual Studio 文档。
Application Insights
Application Insights为您的应用程序提供深入的性能数据。 Application Insights 自动响应率、 故障率、 依赖项响应时间和的详细信息上收集数据。 Application Insights 支持自定义事件和特定的指标记录到您的应用程序。
Azure Application Insights 提供了多种方式对受监视的应用程序提供见解:
应用程序映射– 有助于跨分布式应用程序的所有组件的发现的性能瓶颈或失败的热点。
Azure 指标资源管理器是允许绘制图表,直观地关联趋势,在 Microsoft Azure 门户的组件和调查的峰值和低谷指标值。
在 Application Insights 门户中的性能边栏选项卡:
受监视的应用程序中显示不同的操作的性能详细信息。
允许钻取到单个操作来检查所有部件/依赖项也会影响持续时间长。
可以从此处可收集性能跟踪根据调用 Profiler。
Azure Application Insights Profiler允许常规和按需分析的.NET 应用程序。 Azure 门户会显示捕获的调用堆栈和热路径具有的性能跟踪。 此外可以使用 PerfView 的更深入分析下载跟踪文件。
可以在各种环境中使用 application Insights:
优化,可在 Azure 中。
生产、 开发和过渡环境中的工作原理。
可从在本地工作Visual Studio或其他托管环境中。
有关详细信息,请参阅用于 ASP.NET Core 的 Application Insights。
PerfView
PerfView是性能分析工具创建的.NET 团队专门为诊断.NET 性能问题。 PerfView 允许分析 CPU 使用情况、 内存和 GC 行为、 性能事件和时钟时间。
您可以了解有关 PerfView 以及如何入门的详细信息PerfView 视频教程或通过读取用户的指南,可以在工具或GitHub 上。
Windows 性能工具包
Windows 性能工具包(WPT) 包含两个组件:Windows 性能记录器 (WPR) 和 Windows 性能分析器 (WPA)。 这些工具生成 Windows 操作系统和应用程序的深入的性能配置的文件。 WPT 具有更多方式可视化数据,但收集其数据比 PerfView 的功能较弱。
PerfCollect
PerfView 时.NET 方案一有用的性能分析工具,它仅在上运行 Windows 因此不能使用它来从 ASP.NET Core 应用在 Linux 环境中运行收集跟踪。
PerfCollect是使用分析工具的本机 Linux 的 bash 脚本 (Perf并LTTng) 以 PerfView 可以分析在 Linux 上收集跟踪。 在其中不能直接使用 PerfView 的 Linux 环境中出现的性能问题时,PerfCollect 非常有用。 相反,PerfCollect 可以收集跟踪然后分析的.NET Core 应用中使用 PerfView 的 Windows 计算机上。
提供了有关如何安装和开始使用 PerfCollect 的详细信息GitHub 上。
其他第三方性能工具
- MiniProfiler
- dotTrace 和来自 JetBrains dotMemory
- 从 Intel VTune