调查 Azure 应用程序服务中的句柄计数峰值

问题描述 投票:0回答:1

我们有(相当大的)ASP.Net webforms 应用程序使用 .Net Framework 4.8 在具有多个实例(横向扩展)的 azure 应用程序服务中运行。该应用程序使用一组 azure sql 数据库和 azure blob 存储作为数据存储。我们在应用服务的句柄数中发现了一些有趣的峰值。我们每天都会看到几个高峰。这似乎不是句柄泄漏,因为在达到峰值之后句柄计数会恢复到其原始值。我一直在搜索文档以找到一种方法来解决这些峰值的来源,但我一无所获。

我正在寻找方法来确定导致这些峰值的原因以解决问题。我认为这是我们软件中的一个问题,但我不知道如何查明问题。

  • 我已经使用应用程序洞察记录将峰值与特定请求相关联,并查看那些时间附近是否有任何请求具有非常高的依赖性计数,但尚未找到模式。
  • 看起来不是线程的问题,线程数没有峰值
  • 请求数似乎不是问题,请求数没有峰值

解决这些峰问题的最佳方法是什么?

最近 24 小时内的最大处理数(按实例划分):

azure azure-web-app-service azure-application-insights
1个回答
0
投票

您可以按照以下步骤:

  • 启用诊断日志记录: 如果您还没有,请为您的应用服务启用诊断日志记录。这将帮助您收集有关应用程序性能和可能发生的任何问题的详细信息。

  • 使用 Azure Monitor: Azure Monitor 可用于收集和分析应用程序的详细性能和诊断数据,包括句柄计数指标。您可以根据您感兴趣的指标创建自定义查询和警报,例如句柄数或 CPU 使用率。

  • 分析应用程序日志: 分析应用程序日志,了解在句柄计数达到峰值时是否有任何错误、警告或异常行为。您可以使用 Log Analytics 或 Application Insights 等工具来查询和可视化日志。

  • 使用性能分析工具: 使用性能分析工具,例如 Visual Studio 的性能分析器或 JetBrains dotTrace 来分析您的应用程序。这些工具可以帮助您识别性能瓶颈和导致句柄计数峰值的潜在问题。

  • 监控 SQL 连接: 由于您的应用程序使用 Azure SQL 数据库,因此在高峰时段监控 SQL 连接是否有任何异常行为。您可以使用 SQL Server Management Studio (SSMS) 或 Azure SQL Analytics 等工具来监视和分析 SQL 连接。

  • 监控 Blob 存储: 在高峰时段监控 Azure Blob 存储是否存在异常模式。 Azure Monitor 或 Azure 存储资源管理器可以监控 Blob 存储性能指标和活动。

  • 分析应用程序代码: 检查您的应用程序代码以识别潜在问题,例如资源、文件句柄或连接的不当处置。确保在 C# 中对实现 IDisposable 的对象使用语句,以确保正确处置。

  • 考虑自定义遥测:您可以使用 Application Insights SDK 将自定义遥测添加到您的应用程序以跟踪特定事件或监视特定资源。这可以帮助您查明句柄计数峰值的原因。

完成这些步骤后,您应该更好地理解是什么导致应用程序中的句柄数达到峰值。这将使您能够识别并解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.