2013-05-22 8 views
8

Einige unserer neuesten Web-Service-Anwendungen verwenden die neuere Version 3.9.x von ServiceStack und wir sind gerade dabei, eine unserer älteren Anwendungen von Version 3.5.x auf 3.9.44.0 zu aktualisieren . Die 3.5.x-Version berichtet ziemlich gut mit New Relic, aber die, die wir mit 3.9.x haben, berichten bisher seltsamerweise von New Relic. Manchmal meldet es sich mit wenig Verkehr, aber zu anderen Zeiten ist es nur flach ausgekleidet.Neuerer ServiceStack berichtet schlecht mit New Relic

Wir haben ein offenes Ticket mit New Relic und es wurde ihnen gesagt, dass sie in System.Web.HttpApplication.BeginRequest() und keine bekannte Zeitleiste für Änderungen an ihrer ServiceStack-Unterstützung im DotNet-Dienst für jedes mögliche Problem hier einhaken.

Wir sind also neugierig, ob es in ServiceStack etwas geändert hat, das diesen Haken aus irgendeinem Grund umgehen würde?

Oder hat jemand anderes, der New Relic verwendet, dies erfahren und eine Lösung gefunden, ohne dass New Relic daran beteiligt war?

Antwort

7

Endlich konnten wir eine Lösung für das Problem finden. Der neuere ServiceStack gab alle gefundenen Transaktionsinstanzen frei, zu denen auch die Instanz gehörte, die vom Serviceagenten von New Relic erstellt wurde. Um die New Relic Instanz zu vermeiden werden vorzeitig freigegeben wird, kann die AppHostBase.Release Methode in Ihrem eigenen AppHost überschrieben:

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

    base.Release(instance); 
} 
+0

Ist diese Änderung noch notwendig, oder hat New Relic etwas von ihrem Ende herausgefunden? - Danke – Tyst

+1

@Tyst - Ich glaube nicht, dass New Relic das getan hat und ich denke, dass sie es möglicherweise nicht können, da ServiceStack alle vorhandenen Instanzen erfasst und versucht, sie zu veröffentlichen. Warum wird dies wahrscheinlich immer in ServiceStack benötigt, es sei denn, ServiceStack fügt es in den Base-Release-Code ein. – Quintium

1

Dies hat mit der fehlenden Instrumentierung von New Relic für die späteren Versionen des Frameworks zu tun. Wenn sich etwas geändert hat, muss New Relic Unterstützung dafür hinzufügen.

+0

@ Scalayer - können Sie bitte genauer sein, was in ServiceStack verändert hat und wie es ist Einbinden in die Anforderungsverarbeitungs-Pipeline gegenüber früher. Diese Information kann helfen, zu verstehen, warum New Relic nicht mit späteren Versionen von SS arbeitet. – dawebber

+0

Ich bin kein ServiceStack-Entwickler, aber ich bin sicher, dass Sie sie für weitere Informationen kontaktieren können. – Scalayer

Verwandte Themen