6

我已经开始使用 New Relic 来监控http://alternativeto.net这个相当大的网站的性能。

我注意到的是,他们报告为“TransferRequestHandler”的方法花费了大量时间,当我深入研究它时,我发现它确实是“BeginRequest()”方法需要时间。

在New Relic中看起来像这样。

http://content.screencast.com/users/stuckish/folders/Jing/media/22c8137e-21b1-4b36-8185-15989e173f57/2012-10-30_0941.png

我最接近的发现任何可能是问题的东西是 Stack Overflow 上的这个线程我刚刚发现为什么所有 ASP.Net 网站都很慢,我正在努力解决它,但我已经实际上试图替换会话模块,但这并没有帮助。

该站点是 ASP.NET MVC 和 Webforms 的混合体。

我已经意识到这是一个很长的镜头,你没有太多可以“继续”的事情,但如果有人能让我朝着正确的方向前进,最重要的是能够在本地重现这种行为或类似的事情,我会非常感激的 :)

4

1 回答 1

4

BeginRequest 是一切开始的地方,因此通常会有延迟,但您必须更深入地找到导致延迟的代码的实际点。

如果会话是问题,则在用户进行长时间操作时禁用会话,例如下载文件或使页面长时间停留的复杂程序。

相对于会话:
调用 aspx 页面以随机返回图像 慢速
ASP.NET 服务器不异步处理页面
尝试使 Web 方法异步
Web 应用程序在处理共享同一会话的另一个 Web 应用程序时被阻止  
哪些性能计数器可用于识别 ASP.NET瓶颈?  
完全替换 ASP.Net 的会话  

下一步是创建一个完全自定义的会话。

现在,如果您使用多个池(网络花园)来运行您的站点,它可能会有所帮助,但在此之前,您必须确保您已正确同步数据并使用 Mutex 和其他锁定机制在多池环境中运行。

于 2012-10-30T09:08:19.423 回答