问题描述
在使用Azure App Service服务时,对于它的CPU占比,从App Service Plan级别可以查看整个实例(vm)资源的CPU占比,而如果在具体的一个App Service服务中,则只能查看到当前应用所消耗的CPU时间,如果需要计算它的占比:需要使用公式【 CPU Time / (CPU核数 * 60 )】估算。
CPU percentage: Useful for apps hosted in Basic, Standard, and Premium plans, because they can be scaled out. CPU percentage is a good indication of the overall usage across all instances.(CPU 百分比:适用于托管在“基本”、“标准”和“高级”计划中的应用,因为它们可横向扩展。CPU 百分比是所有实例中总用量的良好指标)
CPU Time: Useful for apps hosted in Free or Shared plans, because one of their quotas is defined in CPU minutes used by the app.(CPU 时间:适用于托管在“免费”或“共享”计划中的应用,因为这些应用的其中一个配额由应用所用的 CPU 时间定义)
但是,CPU Percentage中,包含当前应用服务计划下所有的应用服务的CPU占比,同时,也包含虚拟机系统所占用的内存,有时候CPU 指标高,不一定是应用本身请求所占用,而非常有可能是由系统CPU所占用。
如下图中,应用Host的CPU占比中,系统占比达到了一半。
其实,在App Service服务中,CPU System被称为 Privileged CPU Percent-Usage, 是对App Service Plan 内所有进程进行文件IO, 网络, 内存分配等系统调用时所占用的CPU的总和, 当进程频繁进行上述系统时就会引起Privileged CPU的增加。
如果需要分析详细的每一个进程占用的CPU情况,则需要抓取Windows 系统的 Performance Trace数据。
参考资料
Azure 应用服务监视数据参考 : https://docs.azure.cn/zh-cn/app-service/monitor-app-service-reference#metrics
CPU 时间和 CPU 百分比 : https://learn.microsoft.com/zh-cn/azure/app-service/web-sites-monitor#cpu-time-vs-cpu-percentage