ApplicationInsights的探測器嚐鮮

一般咱們能夠依靠ApplicationInsights(如下簡稱ai)來收集好比請求(request),依賴項(dependencies),異常(exception)等信息,可是沒法收集到好比一個方法(方法內部好比沒有依賴項調用)的信息。linux

不少時候若是一個方法很慢,咱們只能根據ai分析首先是否是依賴項慢致使,若是不是,就以依賴項爲節點,看這個依賴項是前面慢仍是後面慢,而後在進行下一步分析。git

而後又回到了性能優化全靠猜的地步。github

image

 

ai能不能也有相似一些高階的分析工具所具備的分析代碼某路徑耗時的功能呢?答案是確定的。web

 

ai有一個功能稱之爲探查器,就是專門用於診斷這種代碼級性能的,其中早期的只能在azure上才能使用(不管你是web app部署仍是vm部署均可以可是必需要是在azure上的)windows

這個其實限制了其使用範圍,由於我司並無使用azure web app來承載站點而是跑在本身機房上(只能乾瞪眼流口水)性能優化

 

如今他有一個面向core的能夠本身安裝的版本app

具體地址 https://github.com/microsoft/ApplicationInsights-Profiler-AspNetCore asp.net

目前這個項目還處於beta階段,能夠運行在windows和linux下工具

 

使用也很簡單,首先項目確定要是用了ai的,並且要是2.1以上的asp.net core項目,而後在使用ai的基礎上安裝對應的包,而後添加一行代碼便可性能

 

須要安裝一個新的ai的profiler的nuget包,注意目前該包只有pre-release版本,若是搜索不到注意下是否勾選了show pre-release package

image

添加使用Profiler的代碼

image

 

裝好以後,站點直接啓動運行便可

此時站點除了常規的ai監控外,額外得到了profiler的能力,他會偶爾的彙報幾個profiler的包,彙報的策略目前我我的還不清楚不過能夠肯定這個彙報的包確定很少

我手頭一個一天5萬多訪問量(2臺機器)的站點1天下來也就4個profiler

衆所周知的是ai是基於數據量收費的,若是過多的包這個荷包子是個問題,我這邊目前也是一個項目先扔上去看下會致使多少費用增加,目前看起來還好。

 

先看看profiler的效果,若是收集到了profiler的話,會在性能面板裏顯示出來,嗯。我這裏只有4個

image

 

點進去能夠看到ai所收集到的profiler的詳細信息

 

image

這裏能夠看到我整個流程的一個耗時(當前選中的這個)是300多ms,而後這裏能夠細化到每一個方法的耗時是多少,我就隨便找一個分支不斷點下去

 

image

 

image

 

 

從上圖咱們能夠看到我這每一個操做流程中的耗時,具體能夠參考官方文檔 https://docs.microsoft.com/zh-cn/azure/azure-monitor/app/profiler-overview  如何從中分析出你的代碼

相關文章
相關標籤/搜索