net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具...

编者按:即使.NET Core3.1.5已经发布,在进行.NET Core的性能诊断时,我们有时依然不知该从何处下手,那这篇介绍.NET Core3.0中引入的诊断工具,或许能为我们提供参考。

在.NET Core 3.0中,我们引入了一套工具,这些工具利用了.NET运行时中的新功能,使诊断和解决性能问题变得更加容易。

这些运行时功能可帮助您回答一些常见的诊断问题:

  1. 我的应用程序健康吗?

  2. 为什么我的应用程序有异常行为?

  3. 为什么我的应用程序崩溃了?

我的应用程序健康吗?

通常,应用程序可能会慢慢开始泄漏内存,并最终导致内存不足异常。在其他时候,某些有问题的代码路径可能会导致CPU使用率激增。这些只是您可以通过指标主动识别的一些问题类别。

指标

指标表示一段时间内的数据量度。指标(或时间序列)数据使您可以从高层次观察系统状态。与Windows上的.NET Framework不同,.NET Core不会发出性能计数器。相反,我们引入了一种通过EventCounter API 在.NET Core中发出指标的新方法。

EventCounters提供了Windows性能计数器的改进,因为这些计数器现在可在支持.NET Core的所有操作系统上使用。此外,与perf计数器不同,它们还可以在低特权环境(例如xcopy部署)中使用。不幸的是,由于缺少诸如性能监视器(perfmon)之类的工具,因此很难实时使用这些指标。

dotnet-counters

在3.0-preview5中,我们引入了一个新的命令行工具,用于实时观察.NET Core应用程序发出的指标。

您可以通过运行以下命令来安装此.NET全局工具

dotnet tool install --global dotnet-counters --version 1.0.3-preview5.19251.2

在下面的示例中,当我们将负载生成器指向Web应用程序时,我们看到应用程序的CPU利用率和工作集内存急剧上升。

有关如何使用此工具的详细说明,请参阅dotnet-counters自述文件。对于已知的限制,请查看GitHub上的未解决问题。

dotnet-counters

为什么我的应用程序有异常行为?

虽然指标可以帮助识别异常行为的发生,但它们几乎无法提供问题的可见性。要回答为什么您的应用程序具有异常行为的问题,您需要通过跟踪收集其他信息。例如,通过跟踪收集的CPU配置文件可以帮助您识别代码中的热路径。

追踪

跟踪是离散事件的不加时间戳的记录。跟踪包含本地上下文,可让您更好地推断系统的命运。传统上,.NET Framework(以及ASP.NET等框架)通过Windows事件跟踪(ETW)发出有关其内部的诊断跟踪。在.NET Core中,这些跟踪被写入Windows上的ETW和Linux上的LTTng。

dotnet-trace

在3.0-preview5中,每个.NET Core应用程序都会打开一个双工管道EventPipe(该管道可以在其上发出事件)(在* nix上是Unix域套接字/在Windows上是一个命名管道)。当我们仍在研究控制器协议时,请实现此协议的预览版。dotnet-trace

您可以通过运行以下命令来安装此.NET全局工具

dotnet tool install --global dotnet-trace--version 1.0.3-preview5.19251.2

在上面的示例中,我dotnet trace使用默认配置文件运行,该配置文件启用了CPU事件探查器事件和.NET运行时事件。

除了默认事件之外,您还可以根据要尝试执行的调查来启用其他提供程序。

运行后dotnet trace,将显示一个.netperf文件。该文件包含运行时事件和可以在perfview中显示的示例 CPU堆栈。Visual Studio的下一个更新(16.1)也将添加对可视化这些跟踪的支持。

2840d982486e7d3b11cc8cd41cd0a2be.png

如果捕获跟踪时在OS X或Linux上运行,则可以选择将这些.netperf文件转换为可以使用Speedscope.app可视化的.speedscope.json文件。

您可以通过运行以下命令来转换现有跟踪

dotnet trace convert <input-netperf-file>

下图显示了冰柱图,可视化了我们刚刚在Speedscope中捕获的轨迹。

2e99eabf4e101ec5e51f61764c4b39a8.png

有关如何使用此工具的详细说明,请参阅dotnet-trace自述文件。对于已知的限制,请查看GitHub上的未解决问题。
dotnet-trace

为什么我的应用程序崩溃了?

在某些情况下,仅通过跟踪过程就不可能确定导致异常行为的原因。如果流程崩溃或我们可能需要更多信息(例如访问整个流程堆)的情况,则流程转储可能更适合分析。

转储分析

转储是通常在进程意外终止时捕获的进程的工作虚拟内存状态的记录。诊断核心转储通常用于确定应用程序崩溃或意外行为的原因。

传统上,您在应用程序崩溃时依靠操作系统来捕获转储(例如Windows错误报告),或者在满足某些触发条件时使用procdump之类的工具来捕获转储。

迄今为止,在Linux上使用.NET捕获转储的挑战是使用NET捕获转储,gcore否则调试器会导致极大的转储,因为现有工具不知道在.NET Core进程中要修剪哪些虚拟内存页。

此外,即使您已经收集了这些转储,也仍然需要分析调试器,因为它需要获取调试器并将其配置为加载sos(.NET的调试器扩展),这具有挑战性。

dotnet-dump

3.0.0-preview5,我们引入了一个新工具,使您可以捕获和分析Windows和Linux上的进程转储。

dotnet-dump 仍在积极开发中,下表显示了哪些操作系统当前支持哪些功能。

视窗OS X的Linux
收集

分析

您可以通过运行以下命令来安装此.NET全局工具

dotnet tool install --global dotnet-dump --version 1.0.3-preview5.19251.2

安装完成后,您可以通过运行以下命令来捕获进程转储dotnet dump

sudo $HOME/.dotnet/tools/dotnet-dump collect -p 

在Linux上,可以通过运行以下命令加载结果转储来分析结果转储

dotnet dump analyze <dump-name>

在下面的示例中,我尝试通过遍历堆来确定崩溃转储的ASP.NET Core宿主环境。

有关如何使用此工具的详细说明,请参阅dotnet-dump自述文件。对于已知的dotnet-dump限制,请查看GitHub上的未解决问题。

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

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

相关文章

vba中有多线程吗_VBA会被Python代替吗?

先说答案&#xff1a;不会被替代这里引用轮子哥的话说&#xff1a;微软只会开发更多的增强型插件来慢慢淡化VBA&#xff0c;但是不会用其他语言取代VBA。早在17年底&#xff0c;就有风声说Python要取代VBA&#xff0c;成为Excel官方脚本语言。我认真翻看了下好多篇文章&#xf…

统计一个整数的所有因子的个数_【题解循环嵌套】1095:数1的个数

1095&#xff1a;数1的个数时间限制: 1000 ms 内存限制: 65536 KB【题目描述】给定一个十进制正整数n(1≤n≤10000)&#xff0c;写下从1到n的所有整数&#xff0c;然后数一下其中出现的数字“1”的个数。例如当n2时&#xff0c;写下1,2。这样只出现了1个“1”&#xff1b;当…

运行java是提示 选择未包含 main 类型 如何解决_RuoYi 若依 代码生成器使用教程...

你好&#xff01; 若是你想学习如何使用RuoYi 若依 代码生成器, 能够仔细阅读这篇文章&#xff0c;了解一下RuoYi 若依 代码生成器的基本知识。java新建数据表(注意字段必定要写注释)USE ry;web/*Table structure for table sys_zyq */sqlDROP TABLE IF EXISTS sys_zyq;数据库C…

vb.net 功能f8键事件_憋了三年,史上最全的 F1~F12 键用法整理出来了!

F1~F12 键在Excel表格中的用法&#xff0c;小编很早就想写篇教程整理一下。可三年过去了还没整理出来&#xff0c;原因有很多&#xff0c;总结成一个字&#xff1a;懒&#xff01;这么&#xff0c;终于整理出来了&#xff01;提示&#xff1a;有的电脑启用了FN键&#xff0c;如…

usb hid 调试软件_开源USB免驱固件升级软件分享

跳兔科技开源软件分享&#xff0c;免驱的USB固件升级软件&#xff0c;给您的产品提供无限的活力。加快产品上市速度。相信做MCU开发的人都免不了要做boot升级功能&#xff0c;产品投入使用中&#xff0c;如果再使用link进行固件更新的话就比较麻烦&#xff0c;那么拥有一个优秀…

yolo算法_不到2MB,超轻YOLO算法!准确率接近YOLOv3,速度快上45%

点击上方↑↑↑“OpenCV学堂”关注我来源&#xff1a;公众号 量子位 授权最轻的YOLO算法出来了&#xff01;这是个模型非常小、号称目前最快的YOLO算法——大小只有1.3MB&#xff0c;单核每秒148帧&#xff0c;移动设备上也能轻易部署。而且&#xff0c;这个YOLO-Fastest算法满…

http请求丢部分数据_温故知新,HTTP/2

去年年底&#xff0c;据国际互联网工程任务组( IETF )消息&#xff0c;HTTP-over-QUIC 实验性协议将被重命名为 HTTP/3&#xff0c;即有望成为 HTTP 协议的第三个正式版本&#xff0c;也就是说HTTP/3可能要来了。 该消息是如此的惹人注目&#xff0c;是因为HTTP是我们身边的协议…

poi java 其他_让POI架起Java与Office之间的桥梁一

本文将阐述如何用POI来读取/写入完整的Excel文件。作者&#xff1a;中国IT实验室 来源&#xff1a;中国IT实验室 2007年8月31日本文将阐述如何用POI来读取/写入完整的Excel文件。约定&#xff1a;POI项目2.0版现在已经接近正式发行阶段&#xff0c;开发进度迅速&#xff0c;不断…

vue ui框架_「webAPP」记录几款比较好用的vue 移动端的ui框架

有时在做项目时&#xff0c;不同场景的项目既要有网站&#xff0c;又要有手机端&#xff0c;为了快速开发&#xff0c;如果功能简单&#xff0c;要求不高的话&#xff0c;我们一般会用H5进行移动端的适配。如果采用纯html进行书写手机端的样式&#xff0c;往往UI的体验感非常差…

java定义基础变量语句_编程语言第一:JAVA语言基础,变量

在前面的几篇文章中我们介绍了Java的运行环境&#xff0c;以及Eclipse IDE的安装与使用。从今天开始我们的文章开始介绍Java开发语言的基础知识。今天主要介绍Java变量。一、什么是变量变量是指代在内存中开辟的存储空间&#xff0c;用于存放运算过程中需要用到的数据。例&…

spring.profiles.active配置了没生效_微服务架构之「 配置中心 」

在微服务架构的系列文章中&#xff0c;前面已经通过文章《微服务架构之「服务网关 」》介绍过了在微服务中服务网关的原理和应用&#xff0c;今天这篇文章我们继续来聊一聊微服务中另外一个重要模块&#xff1a;「 配置中心 」。后面还会继续介绍 服务框架、服务监控、服务治理…

公招网报照片审核处理工具_消防员招录报名照片处理工具使用说明

消防员招录报名照片处理工具使用说明请将下载的压缩包文件全部解压后&#xff0c;在照片处理工具文件夹中&#xff0c;用鼠标双击 “消防员招录报名照片处理工具.exe” 运行照片处理工具软件。本工具是消防员招录报名照片处理专用工具&#xff0c;只有经本工具处理符合要求的照…

php树形数据结构是什么,数据结构 之 树

概述树的章节一般分两大部分&#xff1a; 一部分将树&#xff0c;一部分将二叉树&#xff1b;虽然二叉树也是树&#xff0c;但是二叉树足够特殊&#xff0c;足够有用&#xff0c;所以重点来讲&#xff1b;或者说&#xff0c;如果不是二叉树&#xff0c;树的家族也不会如此的德高…

螺旋桨设计软件_第四届智能工业软件及设计技术研讨会暨2019天洑软件用户大会成功举办...

第四届智能工业软件及设计技术研讨会暨2019天洑软件用户大会于2019年6月13日-14日在辽宁省大连市召开。天洑软件用户大会至2019年已成功举办了四届&#xff0c;在历届会议中有来自中国、德国、瑞典、捷克、意大利、美国、加拿大、日本等各行业专家学者共同探讨最新的计算机智能…

群晖 百度网盘_海康威视联合百度网盘推出NAS私有存储 贡献带宽获积分兑网盘会员...

此前百度网盘因为限速问题遭到不少用户的吐槽&#xff0c;随后百度网盘推出单次付费加速由于价格过高再次被吐槽。网盘类的服务也确实需要大量的硬盘空间和服务器带宽支撑&#xff0c;所以对用户来说最好的办法还是自己搭建网盘。自己搭建的网盘也就是私有云存储&#xff0c;放…

onenetsim定位功能吗_微信小程序新增后台定位功能,你会卸载地图APP用微信导航吗...

[PConline]8月8日&#xff0c;根据微信官方发布的消息显示&#xff0c;小程序新增后台定位功能&#xff0c;并对自动化测试功能进行了升级。据介绍&#xff0c;为了满足线路导航、路线记录等服务场景下&#xff0c;小程序需要长时间持续定位来提供服务。当用户主动将小程序设置…

MATLAB静力学分析,锻造操作机静力学的Matlab仿真分析

由第3章中该新型锻造操作机的位置反解中的构件的位置以及角度的关系式&#xff0c;均为已知量。施加外力为Ftx50N,Fty300N和沿“轴方向的外力矩M 60000 N.mm。给定初始量范围&#xff0c;通过Matlab软件仿真&#xff0c;可以得到各个液压缸的驱动力的变化曲线。该新型锻造操作机…

babylonjs 设置面板位置_一篇关于开关面板的详细集合,值得收藏转发

对于大部分人来说&#xff0c;开关的布局&#xff0c;开关的种类都会是一脸懵。所以大家在装修的过程中就会迷茫&#xff0c;今天给大家分享一篇集合&#xff0c;相信通过这篇文章&#xff0c;问题会有所缓解~一&#xff0c;开关插座的分类1.电源开关分类&#xff1a;一位单控/…

ecs 云服务器 管理控制台_【弹性计算】教您快速学会云服务器ECS 创建命令!

云助手命令可以在ECS实例中快速完成运行自动化运维脚本、轮询进程、重置用户密码、安装或者卸载软件、更新应用以及安装补丁等一些日常任务。命令类型可以是Windows PowerShell脚本、Bat批处理命令和Linux Shell脚本&#xff0c;命令中支持自定义参数&#xff0c;方便设置变量值…

直流降压的简单方法_量血压的重大误区和简单的降压方法,尽快转告身边人!...

见五蕴皆空&#xff0c;度一切苦厄。舍利子&#xff0c;色不异空&#xff0c;空不异色&#xff0c;色即是空&#xff0c;空即是色&#xff0c;受想行识&#xff0c;亦复如是。舍利子&#xff0c;是诸法空相&#xff0c;不生不灭&#xff0c;不垢不净&#xff0c;不增不减。是故…