自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.NET代碼性能監(jiān)控實現(xiàn)原理

企業(yè)動態(tài)
.NET框架是一個多語言組件開發(fā)和執(zhí)行環(huán)境,它提供了一個跨語言的統(tǒng)一編程環(huán)境,多語言包括:C#、VB、C++(CLI)、J#等。

一、. NET平臺及現(xiàn)狀

1、.NET

.NET框架是一個多語言組件開發(fā)和執(zhí)行環(huán)境,它提供了一個跨語言的統(tǒng)一編程環(huán)境,多語言包括:C#、VB、C++(CLI)、J#等。

.NET為創(chuàng)建HTML頁面提供了一種編程模型,稱為ASP.NET,在ASP.NET的編程模型里也有多種編程模型:如MVC、WebAPI、WebForm等。

[[158847]]

.Net架構(gòu)模型圖

這張圖基本描述了.NET的平臺架構(gòu)。

2、平臺及開源(不得不說的痛)

基于.NET 2015之前版本編寫的應(yīng)用程序只能運行在Windows 平臺上,如果想移值到Linux上則只能依賴開源框架(Mono)且需要重新編譯。

而按照微軟在2015年Build大會上發(fā)布的.NET開發(fā)路線圖,在5.0 及之后版本基于.NET Core 編寫的應(yīng)用程序?qū)⒖梢灾苯訉崿F(xiàn)跨平臺部署和運行,不再需要重新編譯。

5.0的正式版本會在2016春季正式發(fā)布,目前已經(jīng)發(fā)布到Beta 7(2015年9月2日發(fā)布),這個版本的重要意義在于它第一次實現(xiàn)了.NET程序不依賴于Mono即可在Mac和Linux上運行。

微軟已將.NET平臺下除Form之外的Core開源(在JAVA開源8年后,微軟終于邁出了艱難的一步,但要走的路還很長)

[[158848]]

上圖是微軟對.NET平臺的全新構(gòu)建。

3、基本概念

CLR(Common Language Runtime,通用語言運行時)

和Java虛擬機一樣它是.NET應(yīng)用程序的運行時環(huán)境,它負(fù)責(zé)程序的資源管理(內(nèi)存分配和垃圾收集等等),并保證應(yīng)用和底層操作系統(tǒng)之間必要的分離。

MSIL(Microsoft Intermediate Language,微軟中間語言)

IL是微軟.NET平臺上衍生出來的一門中間語言,.NET平臺上各種高級語言(如C#,VB,F(xiàn)#)的編譯器會將各自的文字表述方式轉(zhuǎn)化為IL。各種不同的文字形式最終被統(tǒng)一到了IL的表述方式,包含了.NET平臺上的各種元素,如“范型”,“類”、、“接口”、“模塊”、“屬性”等等。

JIT(Just In Time,即時編譯)

使用高級語言編寫的應(yīng)用被編譯為IL后,JIT編譯器會將IL編譯為本地指令并執(zhí)行,從而最大限度的實現(xiàn)了平臺無關(guān)性。

.NET平臺框架具備天然的跨平臺優(yōu)勢,但微軟卻把它打造成了windows平臺獨享的版本,還好的是他現(xiàn)在邁出了開源和跨平臺的第一步。

二、透視寶之.NET應(yīng)用性能監(jiān)控實現(xiàn)及原理

1、基本原理

.NET 應(yīng)用程序編譯后會被編譯為IL,它們通常會被打包為后綴名為“.dll”的文件,即動態(tài)鏈接庫,這些文件里包含了應(yīng)用程序元數(shù)據(jù)、IL及程序鏈接信息等,JIT負(fù)責(zé)編譯這些DLL中的IL語言,將它們轉(zhuǎn)換成機器可執(zhí)行的機器碼。

在JIT第一次編譯IL之前,我們的 .NET Agent 會攔截并改寫這些IL并注入探針,攔截方法執(zhí)行,抓去程序運行堆棧,收集應(yīng)用程序上下文數(shù)據(jù)(包括SQL等任何想要的數(shù)據(jù))。

2、.NET Profiling Agent 的實現(xiàn)

透視寶 .NET Agent 由兩部分組成:

(1)、探針注入核心組件

它是一個使用 C++ 語言編寫的組件。理論上可以附加到任何想要攔截的.NET應(yīng)用運行時環(huán)境里(包括ASP.NET、.NET桌面應(yīng)用程序及Service、甚至 Windows Phone 的移動應(yīng)用里),它負(fù)責(zé)IL改寫且只會在任何方法被JIT前執(zhí)行一次,一旦執(zhí)行完成,將不會再執(zhí)行。

探針注入核心組件要求高效、穩(wěn)定、安全,因為任何對IL的改寫出錯和操作失誤,都會導(dǎo)致整個應(yīng)用程序崩潰。

(2)、探針

探針是一組方法,主要完成上下文數(shù)據(jù)收集,包括堆棧、SQL、API等透視寶關(guān)注的數(shù)據(jù)。

[[158849]]

這是.NET Profiling Agent 實現(xiàn)的原理圖,圖中綠色的部分即為.NET Profiling Agent存在的兩個層面。

(3)、舉例(我們依然從不變的Hello world! 程序開始)

源程序:

[[158850]]

編譯后:

[[158851]]

Instrumented IL:

[[158852]]

三、安裝及部署

透視寶.NET Profiling Agent 遵循Smart Agent組件的標(biāo)準(zhǔn)開發(fā)規(guī)范,配置和安裝也非常簡單,只需要執(zhí)行一個.bat文件即可,且不受應(yīng)用及機器重啟的影響,只要安裝后它便會一直存在。

[[158853]]

這是.NET Agent的安裝生命周期流程圖,圖中深藍色的部分是需要手動干預(yù)的部分,其它都自動完成。

以上是云智慧透視寶.NET代碼監(jiān)控的實現(xiàn)原理和部署方法,除此之外透視寶還支持PHP、Java、Python等主流Web語言的監(jiān)控,在單次請求追蹤中提供針對代碼執(zhí)行情況的詳細(xì)追蹤,包括:查看執(zhí)行最慢的10個元素,包括元素執(zhí)行次數(shù)、持續(xù)時長和占用時長百分比;查看HTTP請求參數(shù),包括請求的響應(yīng)狀態(tài)、鏈接頁面、具體的請求參數(shù)及返回結(jié)果;查看代碼執(zhí)行堆棧的詳細(xì)樹狀信息,包括每個方法的計算時間、總耗時和被調(diào)用的次數(shù),您能直接看到特殊標(biāo)識的最慢方法;查看涉及SQL語句的總耗時排序,包括SQL執(zhí)行總耗時、執(zhí)行次數(shù)和具體的查詢語句等。

目前透視寶APM的標(biāo)準(zhǔn)版功能永久免費,企業(yè)版提供30天免費試用,有需要的開發(fā)者和運維同學(xué)可以訪問透視寶官網(wǎng):http://toushibao.com/ ,申請注冊。

責(zé)任編輯:李英杰 來源: 51cto.com
相關(guān)推薦

2015-12-11 11:49:19

java

2015-10-12 17:08:14

云智慧

2015-12-11 14:02:02

php應(yīng)用

2015-11-17 18:06:22

云智慧PHP應(yīng)用性能

2025-03-06 02:00:00

.NETGrafana工具

2009-11-04 13:51:46

ADO.NET性能

2015-09-15 15:41:09

監(jiān)控寶Docker

2021-02-02 13:45:31

Vue代碼前端

2025-02-25 12:00:00

Java線程開發(fā)

2025-02-04 10:58:16

2024-07-31 08:31:13

2024-09-04 08:09:51

2010-08-02 15:21:06

DelphiICMP

2024-08-19 02:35:00

模型量化深度學(xué)習(xí)

2009-08-10 17:17:10

ASP.NET安裝部署

2010-01-08 15:41:36

VB.NET窗口關(guān)閉

2025-04-11 03:00:55

2024-09-13 16:47:06

模型量化AI

2009-11-03 10:18:46

VB.NET繼承

2010-01-20 13:42:10

VB.NET訪問INIGetPrivateP
點贊
收藏

51CTO技術(shù)棧公眾號