云智慧透视宝.NET代码性能监控实现原理

一、. NET平台及现状

1、.NET

.NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境,多语言包括:C#、VB、C++(CLI)、J#等。

.NET为创建HTML页面提供了一种编程模型,称为ASP.NET,在ASP.NET的编程模型里也有多种编程模型:如MVC、WebAPI、WebForm等。

.Net架构模型图

这张图基本描述了.NET的平台架构。

2、平台及开源(不得不说的痛)

基于.NET 2015之前版本编写的应用程序只能运行在Windows 平台上,如果想移值到Linux上则只能依赖开源框架(Mono)且需要重新编译。

而按照微软在2015年Build大会上发布的.NET开发路线图,在5.0 及之后版本基于.NET Core 编写的应用程序将可以直接实现跨平台部署和运行,不再需要重新编译。

5.0的正式版本会在2016春季正式发布,目前已经发布到Beta 7(2015年9月2日发布),这个版本的重要意义在于它第一次实现了.NET程序不依赖于Mono即可在Mac和Linux上运行。

微软已将.NET平台下除Form之外的Core开源(在JAVA开源8年后,微软终于迈出了艰难的一步,但要走的路还很长)

上图是微软对.NET平台的全新构建。

3、基本概念

CLR(Common Language Runtime,通用语言运行时)

和Java虚拟机一样它是.NET应用程序的运行时环境,它负责程序的资源管理(内存分配和垃圾收集等等),并保证应用和底层操作系统之间必要的分离。

MSIL(Microsoft Intermediate Language,微软中间语言)

IL是微软.NET平台上衍生出来的一门中间语言,.NET平台上各种高级语言(如C#,VB,F#)的编译器会将各自的文字表述方式转化为IL。各种不同的文字形式最终被统一到了IL的表述方式,包含了.NET平台上的各种元素,如“范型”,“类”、、“接口”、“模块”、“属性”等等。

JIT(Just In Time,即时编译)

使用高级语言编写的应用被编译为IL后,JIT编译器会将IL编译为本地指令并执行,从而最大限度的实现了平台无关性。

.NET平台框架具备天然的跨平台优势,但微软却把它打造成了windows平台独享的版本,还好的是他现在迈出了开源和跨平台的第一步。

二、透视宝之.NET应用性能监控实现及原理

1、基本原理

.NET 应用程序编译后会被编译为IL,它们通常会被打包为后缀名为“.dll”的文件,即动态链接库,这些文件里包含了应用程序元数据、IL及程序链接信息等,JIT负责编译这些DLL中的IL语言,将它们转换成机器可执行的机器码。

在JIT第一次编译IL之前,我们的 .NET Agent 会拦截并改写这些IL并注入探针,拦截方法执行,抓去程序运行堆栈,收集应用程序上下文数据(包括SQL等任何想要的数据)。

2、.NET Profiling Agent 的实现

透视宝 .NET Agent 由两部分组成:

(1)、探针注入核心组件

它是一个使用 C++ 语言编写的组件。理论上可以附加到任何想要拦截的.NET应用运行时环境里(包括ASP.NET、.NET桌面应用程序及Service、甚至 Windows Phone 的移动应用里),它负责IL改写且只会在任何方法被JIT前执行一次,一旦执行完成,将不会再执行。

探针注入核心组件要求高效、稳定、安全,因为任何对IL的改写出错和操作失误,都会导致整个应用程序崩溃

(2)、探针

探针是一组方法,主要完成上下文数据收集,包括堆栈、SQL、API等透视宝关注的数据。

这是.NET Profiling Agent 实现的原理图,图中绿色的部分即为.NET Profiling Agent存在的两个层面。

(3)、举例(我们依然从不变的Hello world! 程序开始)

源程序:

编译后:

Instrumented IL:

三、安装及部署

透视宝.NET Profiling Agent 遵循Smart Agent组件的标准开发规范,配置和安装也非常简单,只需要执行一个.bat文件即可,且不受应用及机器重启的影响,只要安装后它便会一直存在。

这是.NET Agent的安装生命周期流程图,图中深蓝色的部分是需要手动干预的部分,其它都自动完成。

以上是云智慧透视宝.NET代码监控的实现原理和部署方法,除此之外透视宝还支持PHP、Java、Python等主流Web语言的监控,在单次请求追踪中提供针对代码执行情况的详细追踪,包括:查看执行最慢的10个元素,包括元素执行次数、持续时长和占用时长百分比;查看HTTP请求参数,包括请求的响应状态、链接页面、具体的请求参数及返回结果;查看代码执行堆栈的详细树状信息,包括每个方法的计算时间、总耗时和被调用的次数,您能直接看到特殊标识的最慢方法;查看涉及SQL语句的总耗时排序,包括SQL执行总耗时、执行次数和具体的查询语句等。

目前透视宝APM的标准版功能永久免费,企业版提供30天免费试用,有需要的开发者和运维同学可以访问透视宝官网,申请注册。

时间: 2024-08-25 05:42:03

云智慧透视宝.NET代码性能监控实现原理的相关文章

干货 | 云智慧透视宝Java代码性能监控实现原理

这篇图文并茂,高端大气上档次,思维缜密的文章,一看就和我平时的风格不同.对了.这不是我写的,是我家高大英俊,写一手好代码,炒一手好菜的男神架构师老公的大作,曾发表于技术公号,经本人授权转载,如有技术问题,我代为请他本人解答~~ 一.Java平台体系及应用场景 从1995年Sun Microsystems公司正式推出Java,到2006年时Sun公司将其开源,迄今为止已经有了20年的历史.Java本身已不仅仅只是一门面向对象的编程语言,而是由一系列计算机软件和规范形成的技术体系,这个技术体系提供了

透视宝Java监控部署流程

1.登录云智慧透视宝官网,点击页面右上角导航的"免费试用",正确填写免费试用的申请信息后会弹出下面的对话框,同时激活邮件会自动发送到你的邮箱中,按照流程注册帐号即可. 2.注册成功后,登录透视宝,点击配置-应用,在配置页面中下载安装Smart Agent.安装成功后,Smart Agent会根据系统配置自动获取主机信息,大致两分钟后,您就可以在"主机→服务器"模块中查看该服务器的CPU.内存.网卡.磁盘及进程等性能数据. 3.如果要监控应用运行时代码.主机中服务和数

应用性能分析神器“透视宝”亮剑之监控宝API监控优化

作者:云智慧 Kevin Kong & Allen Zhang 企业IT部门在进行互联网/移动应用功能优化过程中最大的痛点在于,明明知道应用存在问题,却难于准确定位具体问题点并快速制定有效的解决方案,此时企业最需要有一套全栈应用性能监控.管理工具.透视宝是云智慧推出的新一代面向业务的端到端应用性能管理(APM)平台,针对移动和Web应用,提供全面的性能监控.分析与管理解决方案,本文将重点描述透视宝在优化云智慧旗下网络监控产品--监控宝API监控过程中起到的关键作用.一.监控宝API监控遇到的问题

云智慧:顺势而为 做世界级APM服务商

云智慧:顺势而为 做世界级APM服务商 云计算.移动互联网的快速发展正在引发一场新的变革,这种变革正在给企业的应用性能管理(Application Performance Management,简称APM)带来新的挑战和机遇,作为互联网公司创业的元老级必备神器,国内首款基于SaaS的APM产品"监控宝"又将在这一领域如何应对?北京云智慧科技公司CEO殷晋在接受采访时表示,在移动互联网的趋势下,云智慧已汇聚旗下监控宝.透视宝和告警宝等产品系列,正在借助新的技术和资源,打造新一代的APM.

监控宝指数:云智慧发布6月行业网站性能指数报告

监控宝指数:云智慧发布6月行业网站性能指数报告,布布扣,bubuko.com

我与云智慧监控宝之间的点点滴滴

作者:菀镁主题曲 从事两年软件开发工作的我,在14年有幸接触到监控宝,当时听说有这个东西,也没过多的进行了解.去年公司在各种大中小型的项目中配备的有10多台服务器,全部放在办公楼4楼的一个机房里,进行统一的管理,而研发中心管理这块的就只有一名技术人员,,从而使得工作任务多,很多要解决的问题要一一进行排查,降低了工作效率.有的时候项目或多或少的都会出现问题,而问题发现.定位的时间都比较长,人工排查,要找半天,对于项目的监控只能是有客户反映问题,然后技术人员慢慢发现,慢慢解决.使用监控宝是在今年,三

深度解析云智慧监控宝新版API监控

API已成为经济生态 API是随着互联网和云计算的兴起而催生的产物.像云供应商亚马逊.互联网巨头Google.社交媒体Twitter,他们的服务都是通过API的方式来提供的.API这个概念在2005年从国外就开始火起来了,同时歪果仁提出了"API经济"的概念. 图:2012年数据 IBM中间件总经理Marie L. Wieck在一次采访中指出,到2018年API经济的市场规模预计将达到2.2万亿美元,而在未来2-3年中,开展API项目的企业数量有望增长150%.API监控可持续考察AP

云智慧监控宝Docker监控功能评测

之前看到dockone社区<[实战]五个Docker监控工具的对比>(http://dockone.io/article/397)的文章,前两天也尝试了新上线的Docker监控工具监控宝.想按照文章中包含的六项指标,对监控宝做一个评价.评测项目包括: 1.部署的难易 2.信息呈现的详细度 3.部署过程中日志的聚集程度 4.告警能力 5.是否可以监控非Docker的资源 6.成本 1.部署的难易 监控宝的Docker监控部署是击中监控工具里最简单的,只需要将Docker监控采集器(SendPro

云智慧API监控 三个步骤提高业务增长

云智慧API监控 三个步骤提高业务增长 基于互联网.云计算和移动的应用正变得越来越普及,正在改变着人们的生活和工作方式.越来越多的应用服务封装成一系列的API开放出去供第三方使用,这使应用的开发周期和成本大大减少.游戏.支付.找餐馆.找酒店,移动社交.地理位置等在线服务应用都可以通过API数据接口调用的方式快速获取.因此,应用接口数据服务性能的差异会直接关系到你的业务运营质量.它将提高或减少你的业务收入,或使不满意的用户放弃你而选择你的竞争产品. 不要让第三方或后端服务毁了你的应用性能 Twit