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

NanoProfiler是一个开源.NET性能调试类库,CoreProfiler是其.NET Core版本的实现。在之前的一些文章中,我曾介绍过NanoProfiler的主要使用方式,以及如何为生产环境,基于ELK对应用性能进行调试和监控。不过,对于一般的用户来说,尤其是本机开发和小团队开发,搭建ELK,维护这套这套支持系统的稳定运行,学习曲线还是有点高。而如果只是单个app孤立的使用NanoProfiler,则大大浪费了其原本能发挥的跨应用性能调试监控的能力。

本文演示了3个不同平台的后端应用使用CoreProfiler/NanoProfiler实现跨应用的性能调试和监控。这三个应用包括.Net Core和传统的.NET 4.5 Web项目,演示的技术包括:

  • 如何在.NET Core程序中使用CoreProfiler进行Wcf服务、Http REST服务和EntityFramework数据库调用的性能监控;

  • 如何在传统.NET 4.5 Web项目中使用NanoProfiler进行Wcf服务和Http REST服务调用的性能监控;

  • 如何配置CoreProfiler/NanoProfiler实现自动的跨平台&应用的整合性能调试和监控;

完整的示例源码,可以从下面的地址下载:
https://github.com/teddymacn/cross-app-profiling-demo

示例代码目录结构

  • Core.UI - .Net Core Mvc 应用,用于UI呈现,调用外部Wcf服务和Http REST服务

  • Core.Api - .Net Core WebApi 应用,提供Http REST服务,使用EntityFramework进行数据访问

  • Net45.Api - 传统.Net 4.5 WebApi 应用,提供Wcf服务和Http REST服务,调用自己提供的Wcf服务,调用外部.Net Core Api提供的Http REST服务

示例代码运行步骤

  1. 开发环境要求:Windows 7+,IIS7+,VS2015 Update 3,.Net Core SDK VS Tool v1.0.0+;

  2. 从github上git clone上面的示例repo;

  3. 运行run_api.cmd启动Core.Api服务;

  4. 使用VS2015打开Net45.Api项目,按F5运行,确保页面打开显示正在运行;

  5. 运行run_ui.cmd启动Core.UI服务;

  6. 在任意浏览器中访问Core.UI的首页: http://127.0.0.1:3001;

  7. 点击打开页面上的链接,进一步点击链接,查看详细的性能调试的结果;

  8. 点击drill down/drill up链接,查看关联服务调用的性能调试结果;

图示

访问Core.UI首页:

查看Core.UI首页的性能调试结果:

注意上图中的drill down链接,点击这些链接,可以drill down到Core.UI对外发出的Wcf服务和REST服务调用的性能调试结果。比如,如果我们点击http://127.0.0.1/Net45Api/AsyncHandler.ashx旁边的drill down链接:

在进一步点击http://127.0.0.1:3002/?from-Net45Api旁边的drill down,我们可以看到从Net45.Api应用调用Core.Api的REST服务的性能调试结果:

代码解析

Core.UI

Core.UI的project.json中,我们可以看到对CoreProfiler和Wcf相关的nuget package的引用:

Core.UI的Startup中,我们可以看到,开启CoreProfiler性能调试,只需要添加这一行代码(这里的参数true表示开启跨应用drilldown功能):

Net45ApiServiceConfiguration.cs中为Wcf服务的client添加了开启CoreProfiler的Wcf调试的Behavior:

这个static partial方法,是.Net Core中,为由Wcf Connected Services生成的Wcf client代码进行额外配置的标准方式,这里不做详述。

在Core.UI/Controllers/HomeController.cs中,值得一提的是,对自定义REST请求,为使drilldown功能工作,需要添加一个header,使得两个请求的性能调试结果能够互相关联:

调用Wcf服务,无需特殊处理,因为前面添加的WCF Behavior已经自动添加对应的header:

Core.Api

Core.Api因为同样是.Net Core项目,总体配置方式和Core.UI类似,唯一额外的是,为EntityFramework,开启了的CoreProfiler的DB profiling支持:

Net45.Api

Net45.Api是一个传统.Net 4.5项目,在之前的NanoProfiler系列中,已经介绍过NanoProfiler在Web应用中的使用,这里不重复介绍了。这里唯一额外的是,开启了跨应用drilldown功能,和.NetCore项目略有不同,需要左两个步骤。

步骤1,在Web.config中添加NanoProfilerImportModule:

步骤2,在Global.asax.cs中,设置TryToImportDrillDownResult开关为true:

基本上就是这样了,Enjoy!

相关文章:

  • NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇

  • 采用MiniProfiler监控EF与.NET MVC项目

原文地址:http://www.cnblogs.com/teddyma/p/coreprofiler_cross_app_profiling_demo.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle授权序列,oracle 第二集序列

方案一:直接授权法1.用happyy2165登录,之后,授权grant select on HAPPYY2165.STUDENT to scott2.用scott登录,用如下代码去访问Student表select * from HAPPYY2165.student方式二:通过角色去控制1.自定义角色 role_tes…

两种播放m3u8链接的方法

两种播放m3u8链接的方法 置顶 2018年12月21日 10:38:10 Saddyの云 阅读数:15200 本文将提供两种方法介绍如何播放m3u8链接 第一种是添加浏览器插件 Native HLS Playback ,此处以Firefox举例(谷歌浏览器也可以用这个插件,苹果电脑自带浏览器…

漫画:什么是ZooKeeper

转载自 漫画:什么是ZooKeeperZookeeper的数据模型Zookeeper的数据模型是什么样子呢?它很像数据结构当中的树,也很像文件系统的目录。树是由节点所组成,Zookeeper的数据存储也同样是基于节点,这种节点叫做Znode。但是&a…

异步性能:了解 Async 和 Await 的成本

异步编程长时间以来一直都是那些技能高超、喜欢挑战自我的开发人员涉足的领域 — 这些人愿意花费时间,充满热情并拥有心理承受能力,能够在非线性的控制流程中不断地琢磨回调,之后再回调。 随着 Microsoft .NET Framework 4.5 的推出&#xff…

什么叫做在oracle目录下,ORACLE directory 目录

Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。其语法为:CREATE [OR REPLACE] DIRECTORY directory AS pathname;本案例具体创建如下:create or replace directory exp_dir as /tmp;目录创建以后&…

银行营业网点管理系统——dao包(BaseDao)

package BranchesMgr.dao; /*** 数据库操作类* author Administrator**/ import java.sql.*; import java.util.List; public class BaseDao {Connection connnull;PreparedStatement psnull;ResultSet rsnull;public void getConnection(){try {Class.forName("com.micro…

netapp做内网穿透有问题

内网穿透 vue 返回 invalid host header 2019年03月17日 16:05:29 renzhehongyi 阅读数:1926收起 个人分类: 互联网Vue 问题:使用花生壳内网穿透只返回304,invalid host header 原因:新版的webpack-dev-server出于…

Visual Studio 15 Preview 5 发布 大幅提升性能

Visual Studio 15 Preview 5 发布了,该版本包括许多新的提升和 bug 修复。 微软发布了 Visual Studio 15 的第 5 个预览版本。据微软描述,Preview 5 的亮点是在性能和内存效率方面迈进了一大步,尤其是在加载一些插件方面,可以观看…

Spring Boot 单元测试详解+实战教程

转载自 Spring Boot 单元测试详解实战教程Spring Boot 的测试类库 Spring Boot 提供了许多实用工具和注解来帮助测试应用程序,主要包括以下两个模块。 spring-boot-test:支持测试的核心内容。spring-boot-test-autoconfigure:支持测试的自动…

oracle修改filesystem,(转):oracle、filesystem、backup日常巡检脚本

1.总脚本xunjian.codeexport PS1"hostname$"[$PWD] umask 022cd /u02/xunjian#######################xunjian check##################################################----1. filesystem check 文件系统检查rm -f /u02/xunjian/devdb2_xunjian.txtecho "1.fi…

华为校招2019

面试是在一个酒店里面的,人很多,面试和流水线一样有20-30个面试官同时进行,面试分成2轮一轮是技术面,一轮是主面。 一面是技术面是一个比较年轻的面试官,面试时间在30-60分钟,先自我介绍,问了…

EQueue 2.3.2版本发布(支持高可用)

前言 前段时间针对EQueue的完善终于告一段落了,实在值得庆祝,自己的付出和坚持总算有了成果。这次新版本主要为EQueue实现了集群功能,基本实现了Broker的高可用。另外还增加了很多实用的功能,对性能也做了很多优化。总之&#xff…

oracle spacial,Oracle Spacial(空间数据库)geometry元数据结构

geometry元数据内容每一维的名称、上下限和容差值存放在系统表中,用户不能直接访问,通过三个视图来存取:USER_SDO_GEOM_METADATA,可以更新ALL_SDO_GEOM_METADATA,只可以查询DBA_SDO_GEOM_METADATA,DBA可查询…

银行营业网点管理系统——dao包(BranchesDao)

package BranchesMgr.dao;import java.util.List;import BranchesMgr.entity.Branches;/*** 网点信息表的借口* author Administrator**/ public interface BranchesDao {//查询所有网点信息List<Branches> getBranches();//根据id查询指定的网点信息Branches BranchesIn…

这 30 个常用的 Maven 命令你必须熟悉

转载自 这 30 个常用的 Maven 命令你必须熟悉maven 命令的格式为 mvn [plugin-name]:[goal-name]&#xff0c;可以接受的参数如下。-D 指定参数&#xff0c;如 -Dmaven.test.skiptrue 跳过单元测试&#xff1b; -P 指定 Profile 配置&#xff0c;可以用于区分环境&#xff1b…

阿里云服务器本地连接(windows) 阿里云服务器和本地的磁盘共享数据

一、向Windows服务器上传下载文件方式 方法有很多种&#xff0c;此处介绍远程桌面的本地资源共享方法。 1、运行mstsc&#xff0c;连接远程桌面的时候&#xff0c;点“选项>>” 2、“本地资源”-->详细信息。 3、“磁盘驱动器”前面打钩。 4、连接远程电脑后&#…

10月15日 2016中国开源年会期待您的参与

由开源社主办的中国开源年会2016 (COSCon16 - China Open Source Conference 2016) 即将于今年10月15日-16日在北京举办。 这是一场-- 跨社区&#xff0c;跨技术领域&#xff0c;跨国度的年度盛会&#xff01; 您可以与真正的开源贡献者和参与者&#xff0c;直接互动&#xff0…

eclipse 创建ssm spring+springmvc+mybatis 实现登录注册

首先找到菜单栏中的Window 下的Preference 然后找到Server 下的 Runtime Environment 然后点击左侧的Add,因为小编用的是Tomcat 9.0 的&#xff0c;你的就要看自己的了&#xff0c;然后Next 然后找到自己存放Tomcat 的路径&#xff0c;然后Finish &#xff0c;最后Apply…

oracle 10741 trace,RedHat5.3上安装Oracle 10.2.0.1

RedHat 5.3上安装Oracle 10.2.0.11、系统环境&#xff1a;RedHat 5.3内存16G交换分区8G2、必须安装如下包&#xff0c;版本可不一样gcc-3.2.3-2make-3.79binutils-2.11openmotif-2.2.2-16setarch-1.3-1compat-gcc-7.3-2.96.122compat-gcc-c-7.3-2.96.122compat-libstdc-7.3-2.9…

达到年薪 40W 必需掌握的技术

转载自 达到年薪 40W 必需掌握的技术必需掌握的 Java 技术知识点 掌握Java编程语言&#xff0c;包含io/nio/socket/multi threads/collection/concurrency等功能的使用&#xff1b;熟练掌握jvm&#xff08;sun hotspot和ibm j9&#xff09;内存模型、gc垃圾回收调优等技能&…