asp.net - System.Web.HttpApplication.BeginRequest() 中的间歇性延迟,与 SessionState 无关

标签 asp.net servicestack newrelic

我们有两个 Web 应用程序(Azure Web 角色),它们在 System.Web.HttpApplication.BeginRequest 期间都会遇到偶尔的长时间延迟(40 到 60 秒)。我们知道这一点是因为我们使用 NewRelic 来监控我们的网络应用程序。 The usual culprit is thread agility issues由于 ASP.NET 的 session 状态锁定机制,但是我们不使用 ASP.NET session 状态,并且在其中一个站点上我们根本不使用 session 。

一个应用程序比另一个应用程序复杂得多并且延迟更多,但我将在这个问题中使用简单的应用程序来缩小根本原因。

简单的 Web 应用程序是一系列基于 ServiceStack 的 Web 服务。它不使用 session 。它仅充当基于 WCF 的服务层的中介。它主要是将请求传送到 WCF 服务,然后将响应映射到 View 以传输回代理。服务器甚至不会因为它们正在运行的负载而出汗(最多 2.5% CPU)。

那么,请问可能的原因是什么?

  • 我最好的猜测是这是一个线程敏捷性问题,因为它似乎在等待某些东西,这表明某处有锁。但是如果不是 session 状态,它在等待什么? NewRelic 或 ServiceStack 导致锁定?
  • NewRelic的上报是错误的,没有问题。好吧,当我们过去使用 ASP.NET session 状态时,NewRelic 正确地报告了问题,并且出现了更多的延迟。
  • 最佳答案

    New Relic 没有特定于 ServiceStack 的检测,WCF 是非常基础的,没有自定义检测。没有更多信息,很难提供任何建议。线程敏捷性也是罪魁祸首,我建议先调查该路线。

    New Relic 可能将时间归因于它不应该的方法。我可能会首先打开 New Relic Support 的票证,并包含您的所有信息(代理日志、IIS/ASP.NET 配置、自定义处理程序?以及您的 New Relic 图表的永久链接)。

    关于asp.net - System.Web.HttpApplication.BeginRequest() 中的间歇性延迟,与 SessionState 无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409244/

    相关文章:

    c# - 打印 GridView

    asp.net - 点网核 "keepalive"

    redis - 如何使用属性作为确定从 Redis 集中删除项目?

    python - Heroku 实例是否持久? (或者,我可以使用字典/数组作为缓存吗?)

    newrelic - 新 Relic 代理未读取 NRIA_LICENSE_KEY 环境值

    android - 尝试将 NewRelic 库添加到我的应用程序时出错

    asp.net - 如何将 Auth0 与现有 ASP.NET Core Identity 数据库结合使用?

    c# - 注册用户 asp.net 身份模型错误

    asp.net-mvc - ServiceStack管理界面

    nunit - 在 TeamCity 中通过 Console Runner 使用 NUnit 3 时找不到 ServiceStack 许可证