IIS zeitlich zeigt die mehrsekundene Latenz, während ASP.NET-Webformen → WCF → SQL-Zeiten unter Sekunde (intermittierendC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 IIS zeitlich zeigt die mehrsekundene Latenz, während ASP.NET-Webformen → WCF → SQL-Zeiten unter Sekunde (intermittierend

Post by Anonymous »

Projektfluss /Tech -Stack < /strong> < /p>

[*].NET Framework 4.8 < /li>
Ich verwende ASP.NET WebForms < /li>
In derselben Projekt habe ich ein AJAX -Bildungsbild mit einem APIS -Bildungsbild mit einem anderen. Projekt
[*] Der WCF -Backend ruft SQL -Server mit ado.net
[*] Manchmal fühlen sich diese APIs langsam an, aber das Problem geht nach einer Weile nach einer Weile von Serenlog. /> zeitweise IIS -Protokolle für < /p>

Code: Select all

POST /eMobilityPortal/AjaxWebService.svc/GetPartners
< /code>
Multi-Sekunden-Zeit-Taken (z. B. ~ 4–10s). Sub-Sekunden
 SQL-Query-Store bestätigt, dass die gespeicherten Verfahren schnell sind.[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]
[ServiceContract(Namespace = "", SessionMode = SessionMode.Allowed)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class AjaxWebService
{
//code
}
< /code>
 Was habe ich < /strong> < /p>

 Timed WCF -Client (AJAX -Schicht) - Serialize /Wire /Deserialize < /li>
< /ul>
getan, < /li> < /> < /> getan.public sealed class CallTiming
{
public string Cid = Guid.NewGuid().ToString("N");
public Stopwatch T = new();
public long ReqSerializeMs, WireMs, RespDeserializeMs;
}

public static class TimingStore
{
public static readonly AsyncLocal Current = new();
public static readonly AsyncLocal Last = new();
}

public sealed class TimedClientInspector : IClientMessageInspector
{
private readonly Stopwatch _wire = new();

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
var t = TimingStore.Current.Value;

if (t != null && t.T.IsRunning)
t.ReqSerializeMs = t.T.ElapsedMilliseconds;

_wire.Restart(); return null;
}

public void AfterReceiveReply(ref Message reply, object state)
{
_wire.Stop();
var t = TimingStore.Current.Value;

if (t != null)
t.WireMs = _wire.ElapsedMilliseconds;
}
}
< /code>
Anrufer -Wrapper & Protokoll: < /p>
[OperationContract]
public AdminService.OfficePartner[] GetPartners()
{
var stopwatch = Stopwatch.StartNew();
var startTime = DateTime.UtcNow;
Log.Information("GetPartners request started at {StartTime}", startTime);

var total = Stopwatch.StartNew();

var svc = new eMobilityService();
Log.Information("Ajax.GetPartners ENTRY");
var result = svc.GetPartners();

stopwatch.Stop();
total.Stop();
var endTime = DateTime.UtcNow;
var duration = endTime - startTime;

var last = TimingStore.Last.Value;
long req = last?.ReqSerializeMs ?? 0;
long wire = last?.WireMs ?? 0;
long resp = last?.RespDeserializeMs ?? 0;
long local = Math.Max(0, total.ElapsedMilliseconds - (req + wire + resp));
var cid = last?.Cid ?? Guid.NewGuid().ToString("N");

Log.Information("CID={Cid} Ajax.GetPartners req_ser={Req}ms wire={Wire}ms resp_deser={Resp}ms local={Local}ms total={Total}ms.  StartTime = {StartTime} EndTime = {EndTime} Duration: {Duration} ms TotalTime = {TotalTime}",
cid, req, wire, resp, local, total.ElapsedMilliseconds, startTime, endTime, stopwatch.ElapsedMilliseconds, (long)duration.TotalMilliseconds);

return result;
}

public OfficePartner[] GetPartners()
{
return Call(s_adminFactory,
svc => svc.GetPartners("abc", "abc"));
}
< /code>
Ergebnis: Client-Summen = Hunderte von MS Auch wenn IIS Multi-Sekunden anzeigt.public List GetPartners(string abc, string abc)
{
var start = DateTime.Now;
var resp = BLOfficeManagement.GetPartners(); // ADO.NET calls
var ms = (DateTime.Now - start).TotalMilliseconds;
BLOfficeManagement.LogMessage(4, (long)ms, $"GetPartners total {ms} ms");
return resp;
}
Web.config (an relevante Teile getrimmt) [/b]



















































< /code>
Ergebnis: Normalerweise unter Sekunde. SQL Query Store bestätigt die Datenbank ist schnell.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post