【问题标题】:Newer ServiceStack reporting badly with New Relic较新的 ServiceStack 对 New Relic 的报告很糟糕
【发布时间】:2013-05-22 21:19:41
【问题描述】:

我们的一些最新 Web 服务应用程序一直在使用更新的 3.9.x 版本的 ServiceStack,我们即将将我们的一个旧应用程序从 v3.5.x 更新为使用 3.9.44.0。 3.5.x 版本在 New Relic 上的报告非常好,但到目前为止,我们在 3.9.x 上的版本在 New Relic 上的报告很奇怪。有时它报告的流量很低,但有时它只是平淡无奇。

我们有一张 New Relic 的未结票,并被告知他们连接到 System.Web.HttpApplication.BeginRequest() 并且没有已知的时间表来更改他们在 DotNet 服务中的 ServiceStack 支持以解决此处任何可能的问题。

所以我们很好奇 ServiceStack 中是否有什么改变会因为任何原因绕过这个钩子?

或者有没有其他人使用 New Relic,在没有 New Relic 参与的情况下经历过这种情况并找到了解决方案?

【问题讨论】:

    标签: servicestack newrelic


    【解决方案1】:

    我们终于找到了解决问题的方法。较新的 ServiceStack 正在释放所有找到的事务实例,其中还包括由 New Relic 的服务代理创建的实例。为避免 New Relic 实例过早释放,可以在自己的 AppHost 中重写 AppHostBase.Release 方法:

    public override void Release(object instance)
    {
       if (instance.GetType().ToString().StartsWith("NewRelic.Agent", StringComparison.CurrentCultureIgnoreCase))
         return;
    
       base.Release(instance);
    }
    

    【讨论】:

    • 这个改动还是有必要的,还是 New Relic 从他们的最后发现了什么? - 谢谢
    • @Tyst - 我不相信 New Relic 做到了,我认为他们可能无法做到,因为 ServiceStack 正在抓取所有现有的相关实例并尝试释放它们。为什么这可能总是在 ServiceStack 中需要,除非 ServiceStack 将它添加到基本版本代码中。
    【解决方案2】:

    这与 New Relic 缺乏对框架更高版本的工具有关。如果发生变化,New Relic 将需要添加对它的支持。

    【讨论】:

    • @Scalayer——您能否更具体地说明 ServiceStack 中发生了什么变化,以及它如何与之前的请求处理流水线挂钩。此信息可能有助于理解为什么 New Relic 不能与更高版本的 SS 一起使用。
    • 我不是 ServiceStack 开发人员,但我相信您可以联系他们以获取更多信息。
    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多