- .net Framework 4.8 < /p>
< /li>
Я использую веб -формы asp.net. Сервис. while. - Журналы перемещаются в Kibana/Elastic Via Serilog
/emobilityportal/ajaxwebservice.svc/getPartners> Показать многосекундное время с временем (например, ~ 4–10). < /p>
Для одного и того же запроса (коррелирован с CID): < /p>
ajax caller). MS) < /p>
< /li>
Метод обслуживания WCF + DB Работа также является субсекундой < /p>
< /li>
sql Query store подтверждает, что сохраненные процедуры появляются, а иногда и пробел, и так же пробел, и так же пробел, и так же пробел, и так же пробел, и так и безразлично, и прозрачно, и так же пробел, и так же пробел, и так же пробел, и так же пробел, и так же пробел, и так и на пробеле. изменения.
Код: Выделить всё
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;
}
}
Код: Выделить всё
[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"));
}
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;
}
< /code>
Результат: обычно субсекунда. SQL-Query Store подтверждает, что DB-это быстро.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... 92-sql-tim
Мобильная версия