我环顾四周,在其他问题上看到了有用的建议,但我不确定它们是一个非常完整的解决方案.主要建议是来自this answer的天蓝色性能计数器和建议.
总结他们是:
使用firebug单独确定渲染时间和加载时间,以便可以判断是否存在渲染问题或服务器问题.
如果是服务器端:
像一个带有单个gif的页面一样测试一个小的静态页面.如果这很慢,则会出现cpu问题.否则,可能是IO绑定或数据库性能有问题.
可以使用性能计数器来检查服务器方面,例如:
记忆
垃圾收集
tcp / ip问题
发送/接收的字节数
请求,排队,拒绝请求
请求等待时间,处理时间
从我天真的角度来看,这个列表中似乎缺少的一些东西就是对传统桌面应用程序的分析,即堆栈看起来像什么时间的百分比(即我们花费时间在哪些功能,以及什么上下文).另一个缺失的项目是分析数据库性能,这似乎在天蓝色上可能与在本地环境中不同,特别是如果开始处理缩放.另一个是花在第三方服务请求上的时间,尽管可以用天蓝色的性能计数器(?)来完成.
我为这个问题的天真性质道歉.我在这里找不到哪些工具和方面来描述一个天蓝色的MVC asp.net网站,你会对上面的列表做出哪些改变?
解决方法
StackOverflow’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,可以让您深入了解您的代码.在方法,通话计数等方面花费的时间
在这四种方法之间,您应该能够找到大多数瓶颈,尤其是第一次通过时.