TransferRequestHandler和BeginRequest的性能问题

时间:2012-10-30 08:49:47

标签: asp.net performance

我已经开始使用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 I just discovered why all ASP.Net websites are slow, and I am trying to work out what to do about it上的这个帖子,但我实际上试图替换会话模块,但这没有用。

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

我意识到这是一个很长的镜头,你没有太多的“继续”,但如果有人可以把我放在正确的方向,最重要的是能够重现本地的行为或类似的东西我非常感激:)

1 个答案:

答案 0 :(得分:4)

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

如果会话是问题,那么当用户进行长时间的操作(例如下载文件)时会禁用会话,或者使页面长时间停留的程序复杂化。

相对于会话:
call aspx page to return an image randomly slow
ASP.NET Server does not process pages asynchronously
Trying to make Web Method Asynchronous
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely

下一步是进行完全自定义的会话。

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