.NET Core 如何调试 CPU 爆高?

在这篇文章中我们将会分析一个 CPU 爆高的案例,测试demo链接 :https://docs.microsoft.com/en-us/samples/dotnet/samples/diagnostic-scenarios/ 。

你将会学到:

  1. 如何使用 dotnet-counters 确定真实的 cpu 使用率。

  2. 使用 dotnet-trace 追踪代码。

  3. 使用 PerfView 寻找问题代码并解决。

确定CPU使用率

首先运行案例程序,参考如下代码:

dotnet run

接下来使用如下命令找到 netcore 程序的 pid。

dotnet-trace ps

值得注意的是,我这里的 pid=22884, 你的可能不一样,然后用 dotnet-counters 工具收集当前 cpu 爆高的状态数据,参考如下命令。

dotnet-counters monitor --refresh-interval 1 -p 22884

这里的 refresh-interval 表示刷新间隔,接下来你会得到如下输出。

Press p to pause, r to resume, q to quit.Status: Running[System.Runtime]% Time in GC since last GC (%)                         0Allocation Rate / 1 sec (B)                            0CPU Usage (%)                                          0Exception Count / 1 sec                                0GC Heap Size (MB)                                      4Gen 0 GC Count / 60 sec                                0Gen 0 Size (B)                                         0Gen 1 GC Count / 60 sec                                0Gen 1 Size (B)                                         0Gen 2 GC Count / 60 sec                                0Gen 2 Size (B)                                         0LOH Size (B)                                           0Monitor Lock Contention Count / 1 sec                  0Number of Active Timers                                1Number of Assemblies Loaded                          140ThreadPool Completed Work Item Count / 1 sec           3ThreadPool Queue Length                                0ThreadPool Thread Count                                7Working Set (MB)                                      63

从输出看,当前的 cpu=0,现在可以让 cpu 爆高起来了,输入链接:api/diagscenario/highcpu/60000 ,然后重新运行下 dotnet-counters ,启动时指定 System.Runtime[cpu-usage] 参数表示我们只捕获 cpu-usage 指标。

dotnet-counters monitor --counters System.Runtime[cpu-usage] -p 22884 --refresh-interval 1

不出意外,你会看到 cpu使用率 上去了。

Press p to pause, r to resume, q to quit.Status: Running[System.Runtime]CPU Usage (%)                                         25

可以看到,cpu使用率已经高达 25% 了,到这里我认为这个 cpu 使用率已经超出了我的预期,接下来就需要进行代码追踪了。

收集运行代码数据

接下来用 dotnet-trace 作为收集工具,运行如下命令。

dotnet-trace collect -p 22884 --providers Microsoft-DotNETCore-SampleProfiler

dotnet-trace 运行大概 20-30s,然后键入 Enter 退出,你会看到当前目录有一个 nettrace 文件,接下来就可以用 PrefView 对 nettrace 进行分析啦。

abaa76bff234bc5a64bff57b1d718dfe.png

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

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

相关文章

[OIBH] 糖果盒(Candy Box)——又一个最大子矩形

http://codewaysky.sinaapp.com/problem.php?id1056 这题和奶牛浴场略有区别,奶牛浴场只需要求出最大子矩形,而这题要求的是最大权重子矩形,不一定要最大的面积,但要最大的权重和 思路是先求出每个最大子矩形,然后求出…

日本第一赘婿!他入赘近20年拿下诺贝尔奖,成名后不忘教光棍讨老婆......

全世界只有3.14 % 的人关注了爆炸吧知识谁能凭感性要诺贝尔奖私有1949年12月10号,日本民众发出了暌违多年的欢呼声,因为诺贝尔奖史无前例地颁给了一位日本物理学家——汤川秀树。报道汤川秀树获奖新闻的报纸获奖后,在自传《旅人:一…

修改mongodb最大查询数_WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除

#Java#Spring#SpringBoot#Mongo#reactor#webflux#数据库#新增#修改#查询#删除#Spring Boot WebFlux Mongo数据库新增、删除、查询、修改视频讲解 : https://www.bilibili.com/video/av84240038/Employee.javapackage com.example.spring.webfluxmongo;import lombok.AllArgsCon…

为什么每个理发店门口都有彩色的柱子?你不知道吧

全世界只有3.14 % 的人关注了爆炸吧知识为什么街上的理发店门口都有一根旋转着的彩色灯柱?好学的小编忍不住去寻找真相...理发店门口彩色的柱子这根彩柱与医疗有关彩柱通常是3种颜色,白红蓝。一般认为:白色绷带,红色绷带上的血(动…

是否显示展开_Creo7.0教程之绝对精度对钣金件展开的作用详解

在讲Creo7.0绝对精度对钣金展开的帮助之前,我们有必要先来说明一下Creo的精度定义。刚使用Creo7.0版本的新建模型,很多网友就问,怎么模板文件中有两个同样单位的选择,“abs”和“rel”有什么区别?新建文件选项其实这就…

知乎点赞超过10万的科学脱单法!这绝对是我见过最硬核的撩妹套路......

全世界只有3.14 % 的人关注了爆炸吧知识科学脱单硬核撩妹前两天,超模君在知乎上看到一个热门的问答:开学后如何快速找到对象?这个话题,让超模君回想起了当年刚进入大学的那会儿,校园中秀恩爱的情侣无处不在&#xff0c…

office 高效办公智慧树_干货高效实用的office办公小技巧之word篇

对于office三剑客ppt、Word、Excel的使用成了日常,作为办公党,今天就拿出自己在平时工作之中发现、学到的小技巧来做个总结,分享给大家。相信很多大神对于这些小技巧都已经精通,所以lz会先列出目录,大家可以自行依据目…

POJ 1904 【强连通分量】.cpp

题意: 很久很久以前.. 有一个国王.. 他有好几个儿子.. 这些王子都喜欢上了邻国的公主.. 他们准备迎娶自己喜欢的公主中的一个.. 国王就让宰相给列一个清单.. 宰相就给了国王一个清单..上面写明了哪个王子将迎娶哪个邻国的公主.. 但是调皮的国王不太满意~~ 他还想知道…

电梯里为什么放镜子?90%的人都不知道

全世界只有3.14 % 的人关注了爆炸吧知识随着高层建筑不断的拔地而起我们每天可能会上下十几层的高楼人们当然不想去爬楼梯所以电梯已成为生活中必不可少的一部分▼我们几乎每天都会坐电梯上班时、回家时、逛街时当我们每走进电梯时第一动作都会干什么呢大概都会先看自己的妆容再…

WPF中的命令(Command)

这节来讲一下WPF中的命令(Command)的使用。【认识Command】我们之前说过,WPF本身就为我们提供了一个基础的MVVM框架,本节要讲的命令就是其中一环,通过在ViewModel中声明命令,从View中使用Binding绑定命令,就能实现从Vi…

matlab中给图像加几个矩形框_没想到!PPT中的这个效果,用好了,简直就是渣图美化器...

相信大家一定看到过,透过磨砂玻璃呈现在眼前的景色,是不是有种朦胧美?其实,在PPT中你也可以复刻出这样的效果。例如,这样的PPT页面:把背景虚化掉,更加突出主题。你想知道PPT中的磨砂效果&#x…

宝贝,我帮你清了购物车哦!

1 一场意外让本不富裕的女朋友雪上加霜甚至还回复了单身▼2 外甥女去参加舅舅的婚礼发现账本上没有她的名字于是写上自己的名字并随了兜里所有的钱人情世故整的明明白白▼3 我感觉再多吹几首他们就能复合......▼4 在家隔离第N天果然天下沙雕是一家▼5 我猜中了开头但没猜…

Dapr牵手.NET学习笔记:Actor小试

Actor模型是一种避免线程共享数据,相同Actor实体串行化的方案,所以不便dapr的其他功能,几乎都是非编程入侵的,相反,Dapr Acror深度定制的,关于Actor,.net中有一些通用框架,比如Akka.…

黄聪:wordpress如何开启文章格式post format

发现很多“古老”的WordPress主题使用量非常大,虽然部分也在随着WordPress版本的升级而“升级”,只不过是修复了bug而已,wordpress的新特性并没有使用。而且多数国内的wordpress主题制作者,也都是在这些主题的基础上进行创作&…

11没有源码注释_我们为什么要看源码、应该如何看源码?

看源码的意义看源码只是一种方法、手段,而不是目的。我也曾经给自己制定过“阅读xxx源码”的目标,现在看起来真的很蠢,一点不smart(specific、measurable、attainable、relevant、time-bound)。只有搞清楚了阅读代码的…

如果你没空读书,就一定要来看看这8个公众号!

全世界只有3.14 % 的人关注了爆炸吧知识不管世界变化多块,阅读仍是个不过时的动作。今天就为大家推荐几个优质公众号,从社会热点、读书成长、生活新知,你的碎片化时间,我们包了!一起来看看呀~♥长按二维码,…

03Prism WPF 入门实战 - Region

1.概要源码及PPT地址:https://github.com/JusterZhu/wemail视频地址:https://www.bilibili.com/video/BV1KQ4y1C7tg?sharesourcecopyweb(1)Prism概览Application:我们开发应用程序,初始化Bootstrapper。Bo…

10月Web服务器调查:Apache下降 Ngnix攀升

来自netcraft的消息,在2010年10月份的Web服务器市场调查中,在232,839,963个网站中,仍有69.8%的站点在使用 Apache服务器,相比于上个月,其市场份额增长了大约1个百分点,Ngnix也有较小幅度的增长,…

Python深度学习029:pytorch中常用的模块或方法

PyTorch是一个广泛使用的深度学习库,提供了许多用于构建和训练神经网络的模块和方法。下面是一些PyTorch中常用的模块和方法的简要介绍: PyTorch常用模块和方法 torch 用途:PyTorch的基础模块,提供了多种数学运算功能。常用方法: torch.tensor():创建张量torch.randn():…

【转载】Android设计中的.9.png

转载自:腾讯ISUX (http://isux.tencent.com/android-ui-9-png.html) 在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开…