重新整理 .net core 实践篇 ———— dotnet-dump [外篇]
前言
本文的上一篇为: 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 [外篇]的更多相关文章
- 重新整理 .net core 实践篇————配置应用[一]
前言 本来想整理到<<重新整理.net core 计1400篇>>里面去,但是后来一想,整理 .net core 实践篇 是偏于实践,故而分开. 因为是重新整理,那么就从配置开 ...
- 重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]
前言 简单整理一个linux 简单上线. 这个是该系列的外篇,该系列继续更新.献给刚学的人. 正文 安装实例 dotnet new webapp -n AspNetCoreDemo -o firstw ...
- 重新整理 .net core 实践篇————依赖注入应用[二]
前言 这里介绍一下.net core的依赖注入框架,其中其代码原理在我的另一个整理<<重新整理 1400篇>>中已经写了,故而专门整理应用这一块. 以下只是个人整理,如有问题, ...
- 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]
前言 介绍下面几个工具: Lldb createdump dotnet-dump dotnet-gcdump dotnet-symbol Procdump 该文的前置篇为: https://www.c ...
- 重新整理 .net core 实践篇 ———— linux上性能排查 [外篇]
前言 该文的前置篇为: https://www.cnblogs.com/aoximin/p/16839830.html 本文介绍性能排查. 正文 上一节是出现错误了,如何去排查具体问题. 这一节介绍一 ...
- 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]
前言 简单介绍一下在排查问题.献给初学者. 该文的前置篇: https://www.cnblogs.com/aoximin/p/16838657.html 正文 什么是linux系统 linux 是基 ...
- 重新整理 .net core 实践篇————依赖注入应用之援军[四]
前言 介绍第三方依赖注入框架Autofac,看看为我们解决什么问题. 下面介绍4个点: 命名注册 属性注册 aop 注入 子容器命名 正文 为什么我们需要使用第三方框架?第三方框架为我们做了什么?第三 ...
- 重新整理 .net core 实践篇—————服务与配置之间[十一二]
前言 前面基本介绍了,官方对于asp .net core 设计配置和设计服务的框架的一些思路.看下服务和配置之间是如何联系的吧. 正文 服务: public interface ISelfServic ...
- 重新整理 .net core 实践篇—————日志系统之作用域[十七]
前言 前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题. 前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们 ...
随机推荐
- 第七十四篇:Vue组件父子传值
好家伙, 1.组件之间的关系 在项目开发中,组件之间的最常见关系分为如下两种: (1)父子关系 (2)兄弟关系 2.父子之间的数据共享 (1)父->子共享数据 父组件向子组件共享数据需要使用自定 ...
- 新零售SaaS架构:商品系统架构设计
SaaS产品就像一座冰山,冰山以上的部分是功能.数据(可见部分).用户界面,冰山以下是系统架构.完整的数据模型.开放体系.非功能性需求(扩展性.可维护性.性能.安全等). 短期内想要快速上线产品,可能 ...
- 第十二章 Kubernetes的服务暴露插件--traefik
1.前言 之前部署的coredns实现了k8s的服务在集群内可以被自动发现,那么如何使得服务在k8s集群外被使用和访问呢? 使用nodeport星的Service:此方法只能使用iptables模型, ...
- 一个注解解决ShardingJdbc不支持复杂SQL
背景介绍 公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是分片表.报错如下: 这下糟了嘛.熟悉 Sharding J ...
- 论文解读(RvNN)《Rumor Detection on Twitter with Tree-structured Recursive Neural Networks》
论文信息 论文标题:Rumor Detection on Twitter with Tree-structured Recursive Neural Networks论文作者:Jing Ma, Wei ...
- Windows客户端DNS工作原理
通常大家对Windows客户端DNS的配置存在多个误区. 误区一,配置1个内网DNS,1个外网DNS.解析内网的时候用内网DNS,解析外网的时候用外网. 电脑怎么知道哪个是内网?哪个是外网?我们内部的 ...
- 多字段特性及配置自定义Analyzer
PUT logs/_doc/1 {"level":"DEBUG"} GET /logs/_mapping POST _analyze { "token ...
- python csv写入多列
import csv import os def main(): current_dir = os.path.abspath('.') file_name = os.path.join(current ...
- 初试 Ceph 存储之块设备、文件系统、对象存储
转载自:https://cloud.tencent.com/developer/article/1010543 1.Ceph 存储介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件 ...
- STM32F0单片机基于Hal库温控智能风扇
一.项目概述 设计采用STM32F0系列单片机做主控芯片,通过DHT11采集温湿度,将温度显示在OLED 屏幕上.根据温度的不同,利用STM32对风扇进行调速,总体硬件设计如下图所示 1.效果展示 2 ...