我有一个简单的Azure云服务,只有一个web角色,没有工作角色,还有两个实例。它被配置为使用A0实例。当我部署它时,门户监控系统显示CPU使用率在98%左右,即使在一夜之间,它也不会下降到合理的水平。
但是,如果我下载一个分析报告,它基本上显示了0%的CPU使用率。这并不奇怪,因为我还没有给服务打电话。当服务运行时,缩小到一个实例,有时会导致CPU使用率下降到合理的水平(低于10%),但并不总是如此。
我试图将桌面远程连接到其中一个实例,但是当它们将虚拟CPU连接起来时,对于远程桌面来说,响应时间太高了:数据包嗅探显示,在RD显示“无法连接”错误之前,我甚至没有得到TCP ACK。我确实将云服务配置为接收RD,因为当CPU不超过90%时,我可以连接。
我发现对于Azure网站,有一个工具(Kudu Process Monitor)提供CPU使用情况的信息,但它似乎不适用于云服务。
是否还有其他工具可用于查看CPU的使用情况?
发布于 2015-10-16 12:13:18
TL;DR:远程PowerShell
与远程桌面相比,远程PowerShell对延迟不太挑剔,因此,一旦您将其配置为可用,就可以连接到运行在98% CPU上的实例,并将Get-Counter '\Process(*)\% Processor Time'与您想要的后续格式化流水线一起使用。诀窍是启用它。
我遵循了MS在远程Powershell到Azure PaaS上的一篇博客文章中的说明,但它们对我来说并不完美。具体来说,用户创建似乎已经失败,因为日志显示用户已创建,但控制面板的用户列表没有。因此修改后的说明如下:
.csdef文件中,在<WebRole>配置添加中
在<WebRole><Endpoints>内部添加EnableWinRM.cmd,其中始终包含副本:
PowerShell -command Set-ExecutionPolicy -ExecutionPolicy无限制的PowerShell .\EnableWinRM.ps1退出/B 0
和一个文件EnableWinRM.ps1,它总是带有副本(替换拇指指纹和主机名):
winrm/config/listener?Address=*+Transport=HTTPS @{Hostname="($certId)"; CertificateThumbprint="($thumbprint)"} WSMan:\localhost\Shell\MaxMemoryPerShellMB 2000 $thumbprint =‘$certId = '<< Hostname >>’winrm创建manage.windowsazure.com的配置选项卡启用远程桌面,在下面的任务栏中选择Remote。这样做的目的是创建一个具有已知用户名和密码的特权用户,因为这是我在下一步中用来连接的用户。对于任何好奇的人来说,CPU的过度使用归因于vsperf。
https://stackoverflow.com/questions/33119824
复制相似问题