[英]How do I query an indicator of performance capability in an Azure App Service?
I have some slow-running services doing some fairly heavy processing. 我有一些运行缓慢的服务,需要进行大量的处理。 These processes run in several different places, including on-prem servers and in Azure, and all write their results to a common database.
这些过程在几个不同的位置(包括本地服务器和Azure)中运行,并且都将其结果写入通用数据库。 I'd like to have a note stored in the database tied to the processing results indicating something useful about the performance capabilities of where the processing was ran.
我想在数据库中存储一条注释,该注释与处理结果相关联,以指示关于运行处理的位置的性能的一些有用信息。
My on-prem servers run the following code successfully, which allows me to log the CPU name (ex: my workstation logs "AMD Ryzen 9 3900X 12-Core Processor" with the following code, which is good enough for our needs): 我的本地服务器成功运行以下代码,这使我可以记录CPU名称(例如:我的工作站使用以下代码记录“ AMD Ryzen 9 3900X 12核处理器”,足以满足我们的需求):
public string GetCpu()
{
var searcher = new ManagementObjectSearcher("SELECT Name FROM Win32_Processor");
string results = "Unknown CPU";
foreach (var item in searcher.Get())
{
results = item["Name"].ToString();
}
return results;
}
As you probably suspect, this code fails to run in Azure with a permissions error. 您可能会怀疑,此代码无法在Azure中运行,并出现权限错误。 What is something else that I can run in Azure to get useful information, even if not identical?
我可以在Azure中运行什么以获取有用的信息,即使它们不完全相同? I don't necessary need a CPU name, just a useful indicator of processing capabilities.
我不需要CPU名称,只是处理能力的有用指示。 If something like "P1V1 App Hosting Plan" was logged, that would be quite good enough for our needs.
如果记录了诸如“ P1V1 App Hosting Plan”之类的内容,则足以满足我们的需求。 I'm not sure if there's something more indicative of processing power than that but I'm open to other suggestions as well.
我不确定是否还有其他指标可以说明处理能力,但是我也愿意接受其他建议。 I suspect getting a CPU model might even be deceptive in Azure given the multi-tenant setups going on.
我怀疑由于正在进行多租户设置,因此在Azure中获取CPU模型甚至可能具有欺骗性。
There is a easy way to get it, the Azure has a environment called WEBSITE_SKU
store the host plan level. 有一种简单的方法可以得到它,Azure有一个称为
WEBSITE_SKU
的环境来存储主机计划级别。 You could go to your Kudu page to check the env. 您可以转到Kudu页面检查环境。
You could use Environment.GetEnvironmentVariable("WEBSITE_SKU")
to get it. 您可以使用
Environment.GetEnvironmentVariable("WEBSITE_SKU")
来获取它。
The above example will output "PremiumV2" for all levels of the Premium V2 configurations. 上面的示例将为Premium V2配置的所有级别输出“ PremiumV2”。 That means it has the same output for P1V2, P2V2, and P3V2 even though each one has twice as many ACUs as the prior.
这意味着即使P1V2,P2V2和P3V2的ACU数量是前一个的两倍,它的输出也相同。 Fortunately, there are a number of other environment variables with useful information in them that can get us more info.
幸运的是, 还有许多其他环境变量中包含有用的信息 ,它们可以为我们提供更多信息。 With this extra information, an example of a function to gather information in a way that works both on-prem and in an Azure App Service might look like this:
有了这些额外的信息,可以以一种既可以在本地部署又可以在Azure App Service中运行的方式收集信息的函数示例如下所示:
public string GetComputationalResources()
{
string results = null;
try
{
var azureSku = Environment.GetEnvironmentVariable("WEBSITE_SKU");
if (!string.IsNullOrWhiteSpace(azureSku))
{
// We're in Azure. Get more information!
var cpuCount = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS")?.Trim();
var cpuId = Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER")?.Trim();
var computeMode = Environment.GetEnvironmentVariable("WEBSITE_COMPUTE_MODE")?.Trim();
var websiteMode = Environment.GetEnvironmentVariable("WEBSITE_SITE_MODE")?.Trim();
results = $"{azureSku} {computeMode} {websiteMode} | {cpuCount}x {cpuId}";
}
}
catch
{
results = null;
}
if (results == null)
{
try
{
using (var searcher = new ManagementObjectSearcher("SELECT Name FROM Win32_Processor"))
{
foreach (var item in searcher.Get())
{
results = item["Name"].ToString().Trim();
}
}
}
catch
{
results = "Unknown CPU";
}
}
return results;
}
Example outputs (it's possible to get AMD and not just Intel in Azure, from what I understand): 示例输出(据我了解,有可能在Azure中获得AMD而不只是Intel):
AMD Ryzen 9 3900X 12-Core Processor
AMD Ryzen 9 3900X 12-Core Processor
PremiumV2 Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
PremiumV2 Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Premium Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 1x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 2x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
Standard Dedicated | 4x Intel64 Family 6 Model 79 Stepping 1, GenuineIntel
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.