【发布时间】:2013-10-24 21:52:32
【问题描述】:
我们有两个 Web 应用(Azure Web 角色),它们在 System.Web.HttpApplication.BeginRequest 期间都偶尔会出现长时间延迟(40 到 60 秒)。我们知道这一点是因为我们使用 NewRelic 来监控我们的网络应用程序。 The usual culprit is thread agility issues 由于 ASP.NET 的会话状态锁定机制,但是我们不使用 ASP.NET 会话状态,并且在其中一个站点上我们根本不使用会话。
一个应用程序比另一个应用程序复杂得多,延迟也更多,但我将在这个问题中使用简单的应用程序来缩小根本原因。
简单的网络应用程序是一系列基于 ServiceStack 的网络服务。它不使用会话。它仅充当基于 WCF 的服务层的中介。它主要将请求引导到 WCF 服务,然后将响应映射到视图以传输回代理。服务器在运行负载时甚至都不会出汗(最多 2.5% CPU)。
请问,可能的原因是什么?
- 我最好的猜测是这是一个线程敏捷性问题,因为它似乎在等待某些东西,这表明某处有锁。但是如果不是会话状态,它还在等什么? NewRelic 或 ServiceStack 导致锁定?
- NewRelic报错,没有问题。好吧,当我们过去使用 ASP.NET 会话状态时,NewRelic 正确地报告了问题,并且得到了更多这样的延迟。
【问题讨论】:
-
我们遇到了完全相同的问题。你的问题是什么,你是如何解决的?谢谢
标签: asp.net servicestack newrelic