gpt4 book ai didi

azure - 无法获取通过 Partition.ReportLoad 报告的指标值

转载 作者:行者123 更新时间:2023-12-03 05:54:53 25 4
gpt4 key购买 nike

我正在尝试动态报告无状态服务的所有实例的负载。目标是稍后从代码中读取报告的值。到目前为止,我已经有了报告一些指标并使用 FabricClient 读取它们的代码,但无论我做什么,我得到的数字始终为 0。这是服务的配置方式 -

<StatelessService ServiceTypeName="MySvcType" InstanceCount="-1">
<SingletonPartition />
<LoadMetrics>
<LoadMetric Name="MemoryInMb" />
<LoadMetric Name="CPU" />
</LoadMetrics>
</StatelessService>

报告指标的代码 -

    protected override async Task RunAsync(CancellationToken cancellationToken)
{
await base.RunAsync(cancellationToken);

PerformanceCounter cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
PerformanceCounter ramCounter = new PerformanceCounter("Memory", "Available MBytes");

while (true)
{
cancellationToken.ThrowIfCancellationRequested();

this.Partition.ReportLoad(new List<LoadMetric> { new LoadMetric("MemoryInMb", (int)ramCounter.NextValue()), new LoadMetric("CPU", (int)cpuCounter.NextValue()) });

await Task.Delay(5000);
}
}

这是我必须提取这些指标的代码 -

        var partitions = await fabricClient.QueryManager.GetPartitionListAsync(new Uri("fabric:/MyApp/MySvc"));
foreach (var partition in partitions)
{
var partitionLoad = await fabricClient.QueryManager.GetPartitionLoadInformationAsync(partition.PartitionInformation.Id);

var replicas = new List<Replica>();
ServiceReplicaList replicaList = await fabricClient.QueryManager.GetReplicaListAsync(partition.PartitionInformation.Id);
replicas.AddRange(replicaList);
while (!string.IsNullOrEmpty(replicaList.ContinuationToken))
{
replicaList = await fabricClient.QueryManager.GetReplicaListAsync(partition.PartitionInformation.Id, replicaList.ContinuationToken);
replicas.AddRange(replicaList);
}

foreach(var replica in replicas)
{
var replicaLoad = await fabricClient.QueryManager.GetReplicaLoadInformationAsync(partition.PartitionInformation.Id, replica.Id);
var memoryReports = replicaLoad.LoadMetricReports.Where(r => r.Name == "MemoryInMb");
var cpuReports = replicaLoad.LoadMetricReports.Where(r => r.Name == "CPU");
}
}

因此,我定义的每个指标仅返回一份报告,并且值始终为 0。对于我应该如何开始检索无状态服务中报告的值有什么想法吗?

最佳答案

负载指标每五分钟缓冲一次并发送到集群。也许您只是等待的时间不够长?

关于azure - 无法获取通过 Partition.ReportLoad 报告的指标值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42932151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com