分析在 azure 上运行的网站的性能的步骤
Posted
技术标签:
【中文标题】分析在 azure 上运行的网站的性能的步骤【英文标题】:Steps for profiling performance of a website running on azure 【发布时间】:2013-09-20 17:29:55 【问题描述】:一般来说,我对运行网站还是很陌生。我熟悉用于桌面应用程序的统计分析器,但不确定如何开始分析网站,因为存在许多额外的潜在瓶颈,而且我不确定哪些分析器可用于网站。
我环顾四周并在其他问题中看到了有用的建议,但我不确定它们是否是一个非常完整的解决方案。主要建议是 azure 性能计数器和来自this answer 的建议。
总结它们是: 使用 firebug 分别确定渲染时间和加载时间,以便判断是渲染问题还是服务器问题。
如果服务器端: 测试一个小的静态页面,例如带有单个 gif 的页面。如果速度很慢,则有 CPU 问题。否则可能是 IO 受限或数据库性能有问题。
可以使用性能计数器来检查服务器方面,例如: 记忆 垃圾收集 tcp/ip 问题 发送/接收的字节数 已请求、已排队、已拒绝的请求 请求等待时间,处理时间
从我幼稚的角度来看,这个列表中似乎缺少的一些东西是对传统桌面应用程序的分析,即堆栈是什么样的时间百分比(即我们花时间在哪些功能上) ,以及在什么情况下)。另一个缺失的项目是分析数据库性能,这似乎在 azure 上与在本地环境中可能有所不同,尤其是在开始处理扩展时。另一个是花在对第三方服务的请求上的时间,尽管这可以通过 azure 性能计数器来完成(?)。
对于这个问题的幼稚性质,我深表歉意。我在这里缺少哪些工具和方面来分析 azure MVC asp.net 网站以及您会对上述列表进行哪些更改?
【问题讨论】:
【参考方案1】:分析网站有很多方面,包括数据库调用、业务逻辑、呈现视图,甚至客户端性能(例如,任何可能运行的 jQuery)。
***'s MiniProfiler 是最容易开始的事情之一,只需安装 NuGet 包,添加一些 javascript 包含,然后将要测试的任何内容包装在 using() 块中,您就会看到执行时间(包括LINQ-to-SQL 和 EF)。如果您想要更精细的单个呼叫时间,您甚至可以创建步骤。
MiniProfiler 的好处是您可以根据环境启用/禁用,这使其适合在 Azure 中运行(与 Visual Studio Profiler 不同)。
您还可以查看Azure Performance Counters,它可以让您了解系统资源,但不像 MiniProfiler 那样进行概要分析。但是,它会让您了解网络延迟以及 CPU 和内存利用率。
一旦您对那里感到满意,您可以使用Chrome's Developer Tools 在客户端分析您的应用程序。它将让您了解 Javascript 的表现如何,包括 CSS 选择器和渲染。
另外值得注意的是,Visual Studio 在一些更高版本中有一个非常好的Profiler,可以让您深入了解您的代码。花在方法、调用次数等上的时间。
在这四种方法之间,您应该能够找到大多数瓶颈,尤其是第一次通过。
【讨论】:
以上是关于分析在 azure 上运行的网站的性能的步骤的主要内容,如果未能解决你的问题,请参考以下文章
Azure上CentOS上安装LIS (Linux Integration Service)