[netCore] monitor performance of webapi via CoreProfiler

NanoProfiler的NetCore版本就是CoreProfiler,使用方式和以前幾乎相同,

對code也不會有太大的侵入性

以前我使用nanoprofiler監控一個repuest進入一個API直到結束返回response,

由於一個action中可能會包含很多處理步驟,如Get Cache From Redis、Get Data From DB、Write Log to SQL Server、publish message to kafka…等,如果要詳細了解每一小部分執行效能,我想透過coreprofiler來處理應該是最有效率的,

當然你也可以自行透過Stopwatch計算執行效能,下面我簡單紀錄如何設定coreprofiler。

 

@install CoreProfiler and CoreProfiler.Web packages.

@enable CoreProfiler profiling in Startup.cs

@Add a coreprofiler.json file to your project

{
  "circularBufferSize": 200,
  "filters": [
    {
      "key": "/coreprofiler",
      "value": "/coreprofiler",
      "type": "CoreProfiler.ProfilingFilters.NameContainsProfilingFilter, CoreProfiler"
    },
    {
      "key": "/nanoprofiler",
      "value": "/nanoprofiler",
      "type": "CoreProfiler.ProfilingFilters.NameContainsProfilingFilter, CoreProfiler"
    },
    {
      "key": "static files",
      "value": "ico,jpg,js,css",
      "type": "CoreProfiler.ProfilingFilters.FileExtensionProfilingFilter, CoreProfiler"
    }
  ]
}

我們透過/coreprofiler/view 或 /nanoprofiler/view 查看CoreProfiler 結果,所以我們要過濾這兩個entrypoint的repuest

 

@wrap Dbconnection via ProfiledDbConnection

由於我要追蹤SQL Server,所以我會在IDapperContext進行處理,

另外我習慣透過flag來控制該功能是否啟用

@add each step in controller

 

觀看結果

點Url可以繼續深入查看當時我們所設定的每個步驟執行效能

參考

使用CoreProfiler/NanoProfiler实现跨平台&应用的整合性能调试

CoreProfiler