前言

本文的上一篇为: https://www.cnblogs.com/aoximin/p/16861797.html

该文为dotnet-dump 和 procdump 的实战介绍一下。

正文

现在很多情况下去抓取dotnet 运行的信息一般都是适用 procdump 或者 直接使用dotnet-dump

这个procdump 有什么用呢?

根据 ProcDump 帮助,下面是必须使用的开关:

-M:当内存提交超过或等于指定值时触发核心转储文件生成 (MB)
-n:退出前要写入的核心转储文件数 (默认值为 1)
-s:连续几秒钟写入转储文件 (默认值为 10)
-d:将诊断日志写入 Syslog
-p:进程的 PID

这个的好处就是有时候突然间内存升高,其实就是多了一个监控的作用。

我记得以前每次用dotnet-dump的时候,我让运维写了一个脚本,当内存到达多少或者cpu到达多少的时候执行一些dotnet-dump 这个命令。

我们知道一般抓取需要连续抓取,那么我们用上一篇的例子抓一下。

procdump  -pgid 108232 -n 2 -c 50 -s 3

上面就是说cpu到达50%并持续时间3秒,那么就执行抓取操作,一共抓取两次,相隔10秒。

这个procdump 抓取的内容在workdirection下面,也就是自己的工作目录下面。

那么抓取一次。

运行的时候一直在monitor,看到了吧。

然后执行慢查询:

这样就ok了。

然后用dotnet-dump 去解析就好了。

如果使用dotnet-dump 的话:

这个是安装:

dotnet tool install -g dotnet-dump

然后你也可以这么收集:

查看正在运行的dotnet core:

dotnet-dump ps

然后:

dotnet-dump collect -p xxx

根据进程号收集就好了。 但是这样只能手动,procdump 可以做到监听。

如果是偶发性的用procdump 比较好,比如不是,那么用dotnet-dump就好了。

然后dotnet-dump 分析的话,举个例子:

dotnet-dump analyze /tmp/coredump.manual.1.108232

然后其实和lldb 没有什么区别,其实lldb 更为强大而已,带调试功能和查看非托管的功能,而dotnet-dump 查看托管问题。

可以看到命令差不多。

把上篇文章的上半段内存问题给演示下:

dumpheap -stat

统计一下:

这个 string 很大,然后查看大对象:

dumpheap -stat -min 85000

大于8.5m string 有 365个。

查看一下对象堆,并且活跃的,可以理解为没有被GC标记的吧:

dumpheap -mt 00007f4908c80f90 -min 85000 -live

这里就有4个了。

那么查看其中一个就好。

95m差不吧。

然后看下其位置:gcroot -all 00007f48b6458178

这样就找到了代码的位置。

该系列逐步补充,补的是一些排查技巧和一些原理,为什么这样抓取,为什么能抓到之类的,怎么排查更快之流。

持续更新。。。。。。。

重新整理 .net core 实践篇 ———— dotnet-dump [外篇]的更多相关文章

  1. 重新整理 .net core 实践篇————配置应用[一]

    前言 本来想整理到<<重新整理.net core 计1400篇>>里面去,但是后来一想,整理 .net core 实践篇 是偏于实践,故而分开. 因为是重新整理,那么就从配置开 ...

  2. 重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]

    前言 简单整理一个linux 简单上线. 这个是该系列的外篇,该系列继续更新.献给刚学的人. 正文 安装实例 dotnet new webapp -n AspNetCoreDemo -o firstw ...

  3. 重新整理 .net core 实践篇————依赖注入应用[二]

    前言 这里介绍一下.net core的依赖注入框架,其中其代码原理在我的另一个整理<<重新整理 1400篇>>中已经写了,故而专门整理应用这一块. 以下只是个人整理,如有问题, ...

  4. 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]

    前言 介绍下面几个工具: Lldb createdump dotnet-dump dotnet-gcdump dotnet-symbol Procdump 该文的前置篇为: https://www.c ...

  5. 重新整理 .net core 实践篇 ———— linux上性能排查 [外篇]

    前言 该文的前置篇为: https://www.cnblogs.com/aoximin/p/16839830.html 本文介绍性能排查. 正文 上一节是出现错误了,如何去排查具体问题. 这一节介绍一 ...

  6. 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]

    前言 简单介绍一下在排查问题.献给初学者. 该文的前置篇: https://www.cnblogs.com/aoximin/p/16838657.html 正文 什么是linux系统 linux 是基 ...

  7. 重新整理 .net core 实践篇————依赖注入应用之援军[四]

    前言 介绍第三方依赖注入框架Autofac,看看为我们解决什么问题. 下面介绍4个点: 命名注册 属性注册 aop 注入 子容器命名 正文 为什么我们需要使用第三方框架?第三方框架为我们做了什么?第三 ...

  8. 重新整理 .net core 实践篇—————服务与配置之间[十一二]

    前言 前面基本介绍了,官方对于asp .net core 设计配置和设计服务的框架的一些思路.看下服务和配置之间是如何联系的吧. 正文 服务: public interface ISelfServic ...

  9. 重新整理 .net core 实践篇—————日志系统之作用域[十七]

    前言 前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题. 前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们 ...

随机推荐

  1. 解决git报错

    解决git报错:fatal: unable to access "https://github.com/.../.git/" 1.在git中执行(记得分开执行) git confi ...

  2. silk-GUI图形界面开发一个词典

    了解使用的库 Silk内置了一些GUI类库供使用者开发MacOS上的图形界面程序,只需引用gui.si即可 准备 首先要知道app需要什么功能,这里我要的是查询单词,可以听语音,还可以存储生词! 那么 ...

  3. 【2022知乎爬虫】我用Python爬虫爬了2300多条知乎评论!

    您好,我是 @马哥python说,一枚10年程序猿. 一.爬取目标 前些天我分享过一篇微博的爬虫: https://www.cnblogs.com/mashukui/p/16414027.html 但 ...

  4. 硬件IIC驱动原理

    1.IIC物理层 IIC通信属于同步半双工通信,IIC总线由两根信号线组成.一根是数据线SDA,一根是时钟线SCL,时钟线只能由主机发送给从机,数据线可以双向进行通信,总线上可挂载多个设备,挂载数量受 ...

  5. 06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本

    06_Linux基础-NGINX和浏览器.网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本 一 ...

  6. HDFS 伪分布式环境搭建

    HDFS 伪分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 伪分布式环境搭建 CSDN:HDFS 伪分布式环境搭建 相关软件版本 Hadoop 2.6.5 CentOS 7 Oracle ...

  7. KingbaseES例程之快速删除表数据

    概述 快速删除表中的数据 delete语句删除数据 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放. 这种删除缺点是:删除效率比较低. 这种删除优点是:支持删除部分数据,支持回滚. ...

  8. 硬核解析MySQL的MVCC实现原理,面试官看了都直呼内行

    1. 什么是MVCC MVCC全称是Multi-Version Concurrency Control(多版本并发控制),是一种并发控制的方法,通过维护一个数据的多个版本,减少读写操作的冲突. 如果没 ...

  9. 电商平台物流模块自建OR对接第三方物流平台

    ​ 前沿 近几年来,电商行业竞争变得愈加激烈,公域流量获客成本越来越高,电商平台规则也越来越严格,数据无法出塔,商家无法自主运营用户群等等原因,很多大品牌纷纷开始搭建自有商城,运营私域流量,以此来降低 ...

  10. docker学习笔记-容器相关命令

    新建并启动容器 docker pull centos (先下载镜像,如果没有直接使用docker run 命令会根据本地情况进行下载) # docker run [可选参数] image # 参数说明 ...