使用CoreProfiler/NanoProfiler实现跨平台amp;应用的整合性能调试
NanoProfiler是一個開源.NET性能調(diào)試類庫,CoreProfiler是其.NET Core版本的實現(xiàn)。在之前的一些文章中,我曾介紹過NanoProfiler的主要使用方式,以及如何為生產(chǎn)環(huán)境,基于ELK對應(yīng)用性能進行調(diào)試和監(jiān)控。不過,對于一般的用戶來說,尤其是本機開發(fā)和小團隊開發(fā),搭建ELK,維護這套這套支持系統(tǒng)的穩(wěn)定運行,學(xué)習(xí)曲線還是有點高。而如果只是單個app孤立的使用NanoProfiler,則大大浪費了其原本能發(fā)揮的跨應(yīng)用性能調(diào)試監(jiān)控的能力。
本文演示了3個不同平臺的后端應(yīng)用使用CoreProfiler/NanoProfiler實現(xiàn)跨應(yīng)用的性能調(diào)試和監(jiān)控。這三個應(yīng)用包括.Net Core和傳統(tǒng)的.NET 4.5 Web項目,演示的技術(shù)包括:
如何在.NET Core程序中使用CoreProfiler進行Wcf服務(wù)、Http REST服務(wù)和EntityFramework數(shù)據(jù)庫調(diào)用的性能監(jiān)控;
如何在傳統(tǒng).NET 4.5 Web項目中使用NanoProfiler進行Wcf服務(wù)和Http REST服務(wù)調(diào)用的性能監(jiān)控;
如何配置CoreProfiler/NanoProfiler實現(xiàn)自動的跨平臺&應(yīng)用的整合性能調(diào)試和監(jiān)控;
完整的示例源碼,可以從下面的地址下載:
https://github.com/teddymacn/cross-app-profiling-demo
示例代碼目錄結(jié)構(gòu)
Core.UI - .Net Core Mvc 應(yīng)用,用于UI呈現(xiàn),調(diào)用外部Wcf服務(wù)和Http REST服務(wù)
Core.Api - .Net Core WebApi 應(yīng)用,提供Http REST服務(wù),使用EntityFramework進行數(shù)據(jù)訪問
Net45.Api - 傳統(tǒng).Net 4.5 WebApi 應(yīng)用,提供Wcf服務(wù)和Http REST服務(wù),調(diào)用自己提供的Wcf服務(wù),調(diào)用外部.Net Core Api提供的Http REST服務(wù)
示例代碼運行步驟
開發(fā)環(huán)境要求:Windows 7+,IIS7+,VS2015 Update 3,.Net Core SDK VS Tool v1.0.0+;
從github上git clone上面的示例repo;
運行run_api.cmd啟動Core.Api服務(wù);
使用VS2015打開Net45.Api項目,按F5運行,確保頁面打開顯示正在運行;
運行run_ui.cmd啟動Core.UI服務(wù);
在任意瀏覽器中訪問Core.UI的首頁:?http://127.0.0.1:3001;
點擊打開頁面上的鏈接,進一步點擊鏈接,查看詳細的性能調(diào)試的結(jié)果;
點擊drill down/drill up鏈接,查看關(guān)聯(lián)服務(wù)調(diào)用的性能調(diào)試結(jié)果;
圖示
訪問Core.UI首頁:
查看Core.UI首頁的性能調(diào)試結(jié)果:
注意上圖中的drill down鏈接,點擊這些鏈接,可以drill down到Core.UI對外發(fā)出的Wcf服務(wù)和REST服務(wù)調(diào)用的性能調(diào)試結(jié)果。比如,如果我們點擊http://127.0.0.1/Net45Api/AsyncHandler.ashx旁邊的drill down鏈接:
在進一步點擊http://127.0.0.1:3002/?from-Net45Api旁邊的drill down,我們可以看到從Net45.Api應(yīng)用調(diào)用Core.Api的REST服務(wù)的性能調(diào)試結(jié)果:
代碼解析
Core.UI
Core.UI的project.json中,我們可以看到對CoreProfiler和Wcf相關(guān)的nuget package的引用:
Core.UI的Startup中,我們可以看到,開啟CoreProfiler性能調(diào)試,只需要添加這一行代碼(這里的參數(shù)true表示開啟跨應(yīng)用drilldown功能):
Net45ApiServiceConfiguration.cs中為Wcf服務(wù)的client添加了開啟CoreProfiler的Wcf調(diào)試的Behavior:
這個static partial方法,是.Net Core中,為由Wcf Connected Services生成的Wcf client代碼進行額外配置的標準方式,這里不做詳述。
在Core.UI/Controllers/HomeController.cs中,值得一提的是,對自定義REST請求,為使drilldown功能工作,需要添加一個header,使得兩個請求的性能調(diào)試結(jié)果能夠互相關(guān)聯(lián):
調(diào)用Wcf服務(wù),無需特殊處理,因為前面添加的WCF Behavior已經(jīng)自動添加對應(yīng)的header:
Core.Api
Core.Api因為同樣是.Net Core項目,總體配置方式和Core.UI類似,唯一額外的是,為EntityFramework,開啟了的CoreProfiler的DB profiling支持:
Net45.Api
Net45.Api是一個傳統(tǒng).Net 4.5項目,在之前的NanoProfiler系列中,已經(jīng)介紹過NanoProfiler在Web應(yīng)用中的使用,這里不重復(fù)介紹了。這里唯一額外的是,開啟了跨應(yīng)用drilldown功能,和.NetCore項目略有不同,需要左兩個步驟。
步驟1,在Web.config中添加NanoProfilerImportModule:
步驟2,在Global.asax.cs中,設(shè)置TryToImportDrillDownResult開關(guān)為true:
基本上就是這樣了,Enjoy!
相關(guān)文章:
NanoProfiler - 適合生產(chǎn)環(huán)境的性能監(jiān)控類庫 之 基本功能篇
采用MiniProfiler監(jiān)控EF與.NET MVC項目
原文地址:http://www.cnblogs.com/teddyma/p/coreprofiler_cross_app_profiling_demo.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
贊賞
人贊賞
總結(jié)
以上是生活随笔為你收集整理的使用CoreProfiler/NanoProfiler实现跨平台amp;应用的整合性能调试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻量级的web框架[Nancy On .
- 下一篇: Visual Studio 15 Pre