关于 Azure 托管缓存服务的 ClientDiagnosticLevel

注意

有关为应用程序选择正确的 Azure 缓存产品的指导,请参阅哪种 Azure 缓存产品适合我?

托管缓存服务客户端应用程序使用诊断级别为诊断数据收集配置。 此诊断级别为配置数据收集级别提供了单一设置。 本主题概述了排查托管缓存服务应用程序的故障排除步骤和诊断。

重要

在托管缓存服务版本中,本主题中所述的 ClientDiagnosticLevel 和相关客户端步骤仅适用于基于角色的云服务缓存客户端。

托管缓存服务 应用程序的故障排除和诊断

在 Azure 上运行的应用程序分布广泛,多实例应用程序可能难以调试。 这些类型的应用程序需要除标准工具和方法以外的工具和方法进行疑难解答。 对 Azure 应用程序进行故障排除超出了本主题的范围,但在 Azure 中的诊断和调试中提供了更多信息。

配置托管缓存服务应用程序以收集诊断数据进行故障排除需要配置诊断级别并在角色启动期间配置缓存诊断。 本主题概述了托管缓存服务应用程序的这些步骤。

  • 配置客户端诊断级别

  • 在角色启动过程中配置缓存诊断

  • 按诊断级别列出的性能计数器

配置客户端诊断级别

托管缓存服务提供五个客户端诊断级别,用于配置诊断数据收集量。 诊断级别的范围为 0 至 4,数字表示为缓存服务器和客户端收集的诊断信息量。 每个诊断级别都包含一组预配置的性能计数器、事件日志、跟踪和故障转储设置,这些设置可用于监视托管缓存服务应用程序的运行状况。

客户端诊断级别 所收集的诊断数据

0

仅限非常关键/灾难性的服务器日志。

1

可帮助评估使用模式、缓存系统健康状况和任何潜在错误的诊断数据。 这是默认配置级别。

2

所有请求的细粒度诊断数据和重要系统信息。

3

更详细的诊断数据和系统信息。

4

所有请求的最详细日志和系统信息。

有两种类型的缓存诊断级别对应于缓存客户端和缓存服务器诊断。 DiagnosticLevel 表示缓存服务器诊断, ClientDiagnosticLevel 表示缓存客户端诊断。 每个级别均配置一组不同的性能计数器、日志、跟踪和故障转储设置。 这些诊断级别在应用程序的 ServiceConfiguration.cscfg 文件中进行配置,并且只需部署更新的 ServiceConfiguration.cscfg 文件便可针对正在运行的云应用程序做出更改。

缓存客户端的 ClientDiagnosticLevel 级别在 ServiceConfiguration.cscfg 中指定,在作为缓存客户端的角色的配置部分中指定。 当角色配置为充当缓存客户端时,托管缓存服务 NuGet包会添加此设置。

注意

有关使用 托管缓存服务 NuGet 包配置缓存客户端的详细信息,请参阅如何:为 Azure 托管缓存服务配置缓存客户端

默认 ClientDiagnosticLevel 为 1,如果角色不存在 ClientDiagnosticLevel ,则使用 ClientDiagnosticLevel 1。 若要更改 ClientDiagnosticLevel,请修改 ServiceConfiguration.cscfg 中角色的 ClientDiagnosticLevel 设置。 以下示例是 WebRole1 ServiceConfiguration.cscfg 文件中的节,其 ClientDiagnosticLevel 为 1。

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for clarity... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>

下表列出了为每个客户端诊断级别收集的诊断数据。

注意

客户端诊断级别所对应的故障转储设置仅与使用 Memcache 客户端填充程序的缓存客户端有关。 对于非 Memcache 客户端,不会收集故障转储。 有关 Memcache 客户端填充码的详细信息,请参阅使用 Azure 托管缓存服务运行 Memcache 应用

ClientDiagnosticLevel 收集的数据

0

  • 日志级别: 严重

  • 无性能计数器

  • 不注册事件日志

  • 微型故障转储

1

2

3

4

注意

在 Azure 模拟器中运行托管缓存服务客户端应用程序时,所有角色实例的跟踪都会收集到 *_IN_0 文件夹下,即使有多个角色实例也是如此。 此行为是设计使然。 托管缓存服务应用程序托管在 Azure 中时,每个客户端角色实例的跟踪都位于角色实例的相应文件夹中。

在角色启动过程中配置缓存诊断

若要启动缓存诊断数据收集,必须在角色启动过程中调用以下代码。 要收集缓存诊断数据,必须将此代码添加到作为缓存客户端或缓存服务器的每个角色。 托管此代码的一个方便位置位于角色的 OnStart 替代中,如以下示例所示。

public override bool OnStart()
{
    DiagnosticMonitorConfiguration dmConfig = 
        DiagnosticMonitor.GetDefaultInitialConfiguration();

    // Configure the collection of cache diagnostic data.
    CacheDiagnostics.ConfigureDiagnostics(dmConfig);

    DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", 
        dmConfig);

    return base.OnStart();
}
Public Overrides Function OnStart() As Boolean

    ' Existing OnStart override code omitted for clarity.

    Dim dmConfig As DiagnosticMonitorConfiguration = _
        DiagnosticMonitor.GetDefaultInitialConfiguration()

    ' Configure the collection of cache diagnostic data.
    CacheDiagnostics.ConfigureDiagnostics(dmConfig)

    DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", _
        dmConfig)

    Return MyBase.OnStart()

End Function

O:Microsoft.ApplicationServer。Caching。AzureCommon.CacheDiagnostics.ConfigureDiagnostics 方法配置缓存诊断数据的集合。 如果未调用此方法,则不会收集缓存诊断数据。 若要使用 CacheDiagnostics 类,请添加对位于 C:\Program Files\Microsoft SDK\Microsoft SDK\Azure\.NET SDK\[Current SDK Version]\ref\Caching 中的Microsoft.ApplicationServer.Caching.AzureCommon.dll的引用,并使用 (或Imports) 语句添加以下内容。

using Microsoft.ApplicationServer.Caching.AzureCommon;
Imports Microsoft.ApplicationServer.Caching.AzureCommon

注意

如果角色已配置为使用 托管缓存服务 NuGet 包的缓存客户端,则已添加Microsoft.ApplicationServer.Caching.AzureCommon.dll程序集引用。

如果要将缓存添加到现有角色,并且诊断配置代码已存在,则可以将调用添加到 O:Microsoft.ApplicationServer。Caching。在调用 O:Microsoft.WindowsAzure.Diagnostics.Diagnostics.DiagnosticMonitor 之前,将 AzureCommon.CacheDiagnostics.ConfigureDiagnostics 配置为现有诊断启动代码。"开始"菜单。

警告

调用这两个 O:Microsoft.ApplicationServer。Caching。AzureCommon.CacheDiagnostics.ConfigureDiagnostics 和 O:Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor。托管缓存服务应用程序中的诊断数据收集需要"开始"菜单。 如果在角色启动期间未同时调用这两个方法,将不收集缓存诊断数据。

按诊断级别列出的性能计数器

以下各节包含每个服务器和客户端诊断级别提供的性能计数器的列表。 包括托管缓存服务和性能计数器。 有关包含托管缓存服务性能计数器说明的完整列表,请参阅 Monitor Azure 托管缓存服务。 有关性能计数器的详细信息,请参阅.NET Framework中的性能计数器

  • 客户端诊断级别 1 性能计数器

  • 客户端诊断级别 2、3 和 4 的性能计数器

客户端诊断级别 1 性能计数器

ClientDiagnosticLevel 1 包含以下性能计数器。

  • \Azure Caching:Client Host\Failure Exceptions

  • \Azure Caching:Client Host\Total Local Cache Hits

  • \Azure Caching:Client Host\Current Server Connections

  • \Azure Caching:Client Host\Average Get Latency / operation Microsecond

  • \Azure Caching:Client Host\Average Put Latency / operation Microsecond

  • \Azure Caching:Client Host\Retry Exceptions

  • \Azure Caching:Client Host\Timeout Exceptions

  • \Azure Caching:Client Host\Requests

  • \Processor(_Total)\% Processor Time

  • \.NET CLR Memory(_Global_)\% Time in GC

  • \Azure Caching:Client(*)\Failure Exceptions

  • \Azure Caching:Client(*)\Total Local Cache Hits

  • \Azure Caching:Client(*)\Current Server Connections

  • \Azure Caching:Client(*)\Average Get Latency / operation Microsecond

  • \Azure Caching:Client(*)\Average Put Latency / operation Microsecond

  • \Azure Caching:Client(*)\Retry Exceptions

  • \Azure Caching:Client(*)\Timeout Exceptions

  • \Azure Caching:Client(*)\Requests

客户端诊断级别 2、3 和 4 的性能计数器

ClientDiagnosticLevel 2、3 和 4 包含以下性能计数器。

  • \Azure Caching:Client Host\Requests

  • \Azure Caching:Client Host\Requests / sec

  • \Azure Caching:Client Host\Server Responses Dropped / sec

  • \Azure Caching:Client Host\Failure Exceptions

  • \Azure Caching:Client Host\Failure Exceptions / sec

  • \Azure Caching:Client Host\Average Get Latency / operation Microsecond

  • \Azure Caching:Client Host\Average Put Latency / operation Microsecond

  • \Azure Caching:Client Host\Average Get Latency (Network) / operation Microsecond

  • \Azure Caching:Client Host\Read Requests

  • \Azure Caching:Client Host\Write Requests

  • \Azure Caching:Client Host\Bytes Received / sec

  • \Azure Caching:Client Host\Bytes Sent / sec

  • \Azure Caching:Client Host\Current Server Connections

  • \Azure Caching:Client Host\Local Cache Filled Percentage

  • \Azure Caching:Client Host\Local Cache Hits Percentage

  • \Azure Caching:Client Host\Total Local Cache Hits

  • \Azure Caching:Client Host\Total Local Cache Objects

  • \Azure Caching:Client Host\Total Notifications Received

  • \Azure Caching:Client Host\Timeout Exceptions

  • \Azure Caching:Client Host\Timeout Exceptions / sec

  • \Azure Caching:Client Host\Retry Exceptions

  • \Azure Caching:Client Host\Retry Exceptions / sec

  • \Azure Caching:Client Host\Total Connection Requests Failed

  • \Azure Caching:Client Host\Network Exceptions

  • \Azure Caching:Client Host\Network Exceptions / sec

  • \Azure Caching:Client Host\Current Waiting Requests

  • \Processor(_Total)\% Processor Time

  • \.NET CLR Memory(_Global_)\% Time in GC

  • \Azure Caching:Client(*)\Requests

  • \Azure Caching:Client(*)\Requests / sec

  • \Azure Caching:Client(*)\Server Responses Dropped / sec

  • \Azure Caching:Client(*)\Failure Exceptions

  • \Azure Caching:Client(*)\Failure Exceptions / sec

  • \Azure Caching:Client(*)\Average Get Latency / operation Microsecond

  • \Azure Caching:Client(*)\Average Put Latency / operation Microsecond

  • \Azure Caching:Client(*)\Average Get Latency (Network) / operation Microsecond

  • \Azure Caching:Client(*)\Read Requests

  • \Azure Caching:Client(*)\Write Requests

  • \Azure Caching:Client(*)\Bytes Received / sec

  • \Azure Caching:Client(*)\Bytes Sent / sec

  • \Azure Caching:Client(*)\Current Server Connections

  • \Azure Caching:Client(*)\Local Cache Filled Percentage

  • \Azure Caching:Client(*)\Local Cache Hits Percentage

  • \Azure Caching:Client(*)\Total Local Cache Hits

  • \Azure Caching:Client(*)\Total Local Cache Objects

  • \Azure Caching:Client(*)\Total Notifications Received

  • \Azure Caching:Client(*)\Timeout Exceptions

  • \Azure Caching:Client(*)\Timeout Exceptions / sec

  • \Azure Caching:Client(*)\Retry Exceptions

  • \Azure Caching:Client(*)\Retry Exceptions / sec

  • \Azure Caching:Client(*)\Total Connection Requests Failed

  • \Azure Caching:Client(*)\Network Exceptions

  • \Azure Caching:Client(*)\Network Exceptions / sec

  • \Azure Caching:Client(*)\Current Waiting Requests

另请参阅

参考

Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor

概念

监视 Azure 托管缓存服务

其他资源

.NET Framework 中的性能计数器
Azure 中的诊断和调试