一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - 使用 .NET Core 中的 EventCounters 衡量性能

使用 .NET Core 中的 EventCounters 衡量性能

2022-01-07 22:12UP技術(shù)控conan5566 ASP.NET教程

對于每隔幾毫秒發(fā)生的事件,最好使每個事件的開銷較低(小于一毫秒)。 否則,對性能的影響將很大。 記錄事件意味著你將向磁盤寫入內(nèi)容。 如果磁盤不夠快,你將丟失事件。 你需要一個解決方案,而不是記錄事件本身。

使用 .NET Core 中的 EventCounters 衡量性能

背景

對于每隔幾毫秒發(fā)生的事件,最好使每個事件的開銷較低(小于一毫秒)。 否則,對性能的影響將很大。 記錄事件意味著你將向磁盤寫入內(nèi)容。 如果磁盤不夠快,你將丟失事件。 你需要一個解決方案,而不是記錄事件本身。

在處理大量事件時,了解每個事件的度量值也無濟(jì)于事。 大多數(shù)時候,你只需要一些統(tǒng)計信息。 因此,你可以在進(jìn)程本身中獲取統(tǒng)計信息,然后偶爾編寫一個事件來報告統(tǒng)計信息,這是 EventCounter 將執(zhí)行的操作。

代碼實現(xiàn)

下面是有關(guān)如何實現(xiàn) System.Diagnostics.Tracing.EventSource 的示例。 創(chuàng)建名為 MinimalEventCounterSource.cs 的新文件

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Threading.Tasks; 
  5. using System.Diagnostics.Tracing; 
  6.  
  7. namespace WebApplication42 
  8.     [EventSource(Name = "Sample.EventCounter.Minimal")] 
  9.     public sealed class MinimalEventCounterSource : EventSource 
  10.     { 
  11.         public static readonly MinimalEventCounterSource Log = new MinimalEventCounterSource(); 
  12.  
  13.         private EventCounter _requestCounter; 
  14.  
  15.         private MinimalEventCounterSource() => 
  16.             _requestCounter = new EventCounter("request-time", this) 
  17.             { 
  18.                 DisplayName = "Request Processing Time"
  19.                 DisplayUnits = "ms" 
  20.             }; 
  21.  
  22.         public void Request(string url, float elapsedMilliseconds) 
  23.         { 
  24.             Console.WriteLine("url:" + url + "  elapsedMilliseconds:" + elapsedMilliseconds); 
  25.             WriteEvent(1, url, elapsedMilliseconds); 
  26.             _requestCounter?.WriteMetric(elapsedMilliseconds); 
  27.         } 
  28.  
  29.         protected override void Dispose(bool disposing) 
  30.         { 
  31.             _requestCounter?.Dispose(); 
  32.             _requestCounter = null
  33.  
  34.             base.Dispose(disposing); 
  35.         } 
  36.     } 

添加操作篩選器,創(chuàng)建名為 LogRequestTimeFilterAttribute.cs 的新文件,并使用以下代碼:

  1. using Microsoft.AspNetCore.Http.Extensions; 
  2. using Microsoft.AspNetCore.Mvc.Filters; 
  3. using System; 
  4. using System.Collections.Generic; 
  5. using System.Diagnostics; 
  6. using System.Linq; 
  7. using System.Threading.Tasks; 
  8.  
  9. namespace WebApplication42 
  10.     public class LogRequestTimeFilterAttribute : ActionFilterAttribute 
  11.     { 
  12.         private readonly Stopwatch _stopwatch = new Stopwatch(); 
  13.  
  14.         public override void OnActionExecuting(ActionExecutingContext context) => _stopwatch.Start(); 
  15.  
  16.         public override void OnActionExecuted(ActionExecutedContext context) 
  17.         { 
  18.             _stopwatch.Stop(); 
  19.  
  20.             MinimalEventCounterSource.Log.Request( 
  21.                 context.HttpContext.Request.GetDisplayUrl(), _stopwatch.ElapsedMilliseconds); 
  22.         } 
  23.     } 

操作篩選器在請求開始時啟動 Stopwatch,并在其完成后停止,捕獲運行時間。 總毫秒數(shù)記錄到 MinimalEventCounterSource 單一實例。 為了應(yīng)用此篩選器,需要將其添加到篩選器集合。 在 Startup.cs 文件中,更新包含此篩選器的 ConfigureServices 方法。

  1. // This method gets called by the runtime. Use this method to add services to the container. 
  2.         public void ConfigureServices(IServiceCollection services) 
  3.         { 
  4.             services.AddControllers(options => options.Filters.Add<LogRequestTimeFilterAttribute>()); 
  5.             services.AddSwaggerGen(c => 
  6.             { 
  7.                 c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApplication42", Version = "v1" }); 
  8.             }); 
  9.         } 

使用 .NET Core 中的 EventCounters 衡量性能

使用 .NET Core 中的 EventCounters 衡量性能

  1. url:https://localhost:5008/WeatherForecast elapsedMilliseconds:70 
  2.  
  3. url:https://localhost:5008/WeatherForecast elapsedMilliseconds:19 
  4.  
  5. url:https://localhost:5008/WeatherForecast elapsedMilliseconds:18 
  6.  
  7. url:https://localhost:5008/WeatherForecast elapsedMilliseconds:19 
  8.  
  9. url:https://localhost:5008/WeatherForecast elapsedMilliseconds:22 
  10.  
  11. url:https://localhost:5008/WeatherForecast elapsedMilliseconds:17 
  12.  
  13. url:https://localhost:5008/WeatherForecast elapsedMilliseconds:17 

原文鏈接:https://mp.weixin.qq.com/s/rRYKxa1iHLKCKwTH2SK4Mg

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精品免费一区二区 | 国产精品1024永久免费视频 | 亚洲日本中文字幕天天更新 | 色噜噜狠狠狠综合曰曰曰88av | 色综合天天综合网看在线影院 | 三上悠亚国产精品一区 | 亚洲人成综合在线播放 | 关晓彤被草 | 国产在线视频一区二区三区 | 风间由美vec399 | 1024免费永久福利视频 | 国产色综合久久五月色婷婷中文 | 人与蛇boxxⅹ | 色琪琪久久草在线视频 | 美女福利视频午夜在线 | 91噜噜噜噜色 | 冰山美人调教耻辱h | 亚洲视频在线观看不卡 | 久久这里只有精品无码3D | 插入粉嫩 | 红楼梦黄色小说 | 成人影院视频 | 国产成人精品免费大全 | 私人黄色影院 | 无码人妻精品一区二区蜜桃在线看 | a亚洲视频 | 青青青草国产线观 | 国产成人精品福利色多多 | 福利一区在线观看 | 亚洲国产综合另类视频 | 国产98在线 | bestialitysex杂交 bedfriend泰剧全集免费观看 | 日本中文字幕永久在线 | ysl蜜桃色成人麻豆 youwu在线影院 | 五月天网站 | 欧美乱理伦另类视频 | 成人精品视频 成人影院 | 国产日韩欧美在线一区二区三区 | 国产欧美日韩免费一区二区 | 欧美成人aaaa免费高清 | 亚飞与亚基国语1080p在线观看 |