7

一般来说,我对运行网站很陌生。我熟悉桌面应用程序的统计分析器,但不确定如何开始分析网站,因为还有很多额外的潜在瓶颈,而且我不确定哪些分析器可用于网站。

我环顾四周并在其他问题中看到了有用的建议,但我不确定它们是否是一个非常完整的解决方案。主要建议是 azure 性能计数器和来自此答案的建议。

总结它们是:使用萤火虫分别确定渲染时间和加载时间,以便可以判断一个是渲染问题还是服务器问题。

如果是服务器端:测试一个小的静态页面,例如带有单个 gif 的页面。如果速度很慢,则可能是 CPU 问题。否则可能是 IO 受限或数据库性能有问题。

可以使用性能计数器检查服务器方面,例如:内存垃圾收集 tcp/ip 发出字节发送/接收请求请求、排队、拒绝请求等待时间、处理时间

从我幼稚的角度来看,这个列表中似乎缺少的一些东西是对传统桌面应用程序的分析,即堆栈看起来像什么百分比的时间(即我们花时间在什么功能上,以及什么上下文)。另一个缺失的项目是分析数据库性能,这似乎在 azure 上与在本地环境中可能有所不同,尤其是在开始处理扩展时。另一个是花在请求第三方服务上的时间,尽管这可以通过 azure 性能计数器(?)来完成。

我为这个问题的幼稚性质道歉。我在这里缺少哪些工具和方面来分析一个 azure MVC asp.net 网站,您会对上述列表进行哪些更改?

4

1 回答 1

4

从数据库调用、业务逻辑、呈现视图,甚至客户端性能(例如,任何可能运行的 jQuery)来看,对站点进行剖析有很多方面。

StackOverflow 的 MiniProfiler是最容易上手的工具之一,只需安装 NuGet 包,添加一些 Javascript 包含,然后将要测试的任何内容包装在 using() 块中,您就会看到执行时间(包括 LINQ-to- SQL 和 EF)。如果您想要更精细的单个呼叫时间,您甚至可以创建步骤。

MiniProfiler 的好处是您可以根据环境启用/禁用,这使其适合在 Azure 中运行(而不是说,Visual Studio Profiler)。

您还可以查看Azure Performance Counters,它可以让您了解系统资源,但不像 MiniProfiler 那样进行分析。但是,它会让您了解网络延迟以及 CPU 和内存利用率。

一旦您对那里感到满意,您就可以使用Chrome 的开发者工具在客户端分析您的应用程序。它将让您了解 Javascript 的表现如何,包括 CSS 选择器和渲染。

同样值得注意的是,Visual Studio 在某些更高版本中具有非常好的Profiler,可以让您深入了解您的代码。在方法、调用计数等上花费的时间。

在这四种方法之间,您应该能够找到大多数瓶颈,尤其是第一次通过。

于 2013-09-23T03:46:34.860 回答