docker下netcore内存dump
一般开发阶段可以通过visualstudio来检查程序的内存 、cup等的优化问题。vs下调试=》性能探查器,这里面大有千秋。
但是好多内存问题是经过时间积累下来才暴露出来的,在生产环境中不做不了这些操作了。
在linux裸机下面的内存泄漏排查微软官网是有详细说明的,按照操作来就可以了。教程如下:
但是部署在docker下的程序怎么排查呢?
这里有一个关键的地方就是转储文件,所有分析排查操作都是针对这个文件来操作的。
linux裸机下面可以通过dotnet-dump collect命令来收集该文件,docker下面其实也有createdump命令来收集这个文件。但是前提是要给足docker权限,运行netcore服务的时候需要带上--privileged=true这个参数。
下面通过一个小例子演示在docker下面抓取出转存文件,后面的操作跟微软官方文档一样,不过多赘述。
首先进入mytest容器内部
docker exec -it 03e7 bash
容器内部执行该命令可以看到createdump命令有没有,如果提示没有足够权限那就是运行docker服务没有给足权限,该带上--privileged=true 了。
find / -name createdump
上面的find命令查询docker内部有没有createdump的工具,docker内部是自带了的,如果没有就升级一下docker版本。
遇到这个Operation not permitted命令我要回头重启一下服务带上--privileged=true了,因为我中途干了别的。
如果想查看一下内部的pid,可以通过top命令,下面是安装top的。。。
可以看到我们的dotnet部署的pid是1,关键抓取转存文件的命令就是执行一下 createdump pid
/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.3/createdump 1
下面就是推出docker,把文件拷贝到宿主机器上了,通过docker cp 待分析容器id:/tmp/coredump.1 coredump.1 拷贝文件到我们宿主机器,ls查询。
docker cp a59ff3a2b39e:/tmp/coredump.1 coredump.1
下面就是通过分析该文件了
dotnet-dump analyze coredump.1
后面操作按照文档一步一步的看来 调试内存泄漏教程 | Microsoft Learn
到这里算是完成了docker内抓取转存文件和分析的操作,但是有更方便的命令,那就是dotnet-monitor
官网的介绍和使用同样简单不容易看懂所以我找到了一遍手把手教学的博客,这个同样是对docker下面做了详细介绍。
使用 dotnet-monitor 分析.NET 应用程序 - SpringLeee - 博客园 (cnblogs.com)
总结,微软官方文档有好多使用的分析工具,但是不是文档很详细,docker下面的操作都是一笔带过,这里就靠各位大佬的总结,所以看着官方文档找到自己需要解决问题的工具,再去搜索对应的用法,还是能解决实际生产的问题。
docker下netcore内存dump的更多相关文章
- dotnet core调试docker下生成的dump文件
最近公司预生产环境.net core应用的docker容器经常出现内存暴涨现象,有时会突然吃掉几个G,触发监控预警,造成容器重启. 分析了各种可能原因,修复了可能发生的内存泄露,经测试本地正常,但是发 ...
- Android安全讲座第九层(二) 内存dump
近来android上越来越多的应用对自身的保护机制加强了重视,主要表现在几个方面. 1 dex加壳 2 so加壳 3 dex藏在so中,在适当的时候释放. 这是技术上一个进步,并且还有一些专业的公司提 ...
- [zhuan]Android安全讲座第九层(二) 内存dump
http://sunzeduo.blog.51cto.com/2758509/1409450 近来android上越来越多的应用对自身的保护机制加强了重视,主要表现在几个方面. 1 dex加壳 2 s ...
- CentOS下Docker与.netcore(五)之 三剑客之一Docker-swarm集群
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- CentOS下Docker与.netcore(二) 之 Dockerfile
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- CentOS下Docker与.netcore(一) 之 安装
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- docker容器内存占用 之 系统cache,docker下java的内存该如何配置
缘起: 监控(docker stats)显示容器内存被用完了,进入容器瞅了瞅,没有发现使用内存多的进程,使用awk等工具把容器所有进程使用的内存加起来看看,距离用完还远了去了,何故? 分析: 该不会d ...
- 在Linux(Centos7)上使用Docker运行.NetCore
在上一篇中我们写了如何在windows中使用docker运行.netcore,既然我们了解了windows下的运行发布,我们也可以试试linux下使用docker运行.netcore项目,那么今天我们 ...
随机推荐
- SQL注入漏洞原理与利用
SQL注入漏洞原理与利用 SQL注入漏洞流程 判断注入类型 判断字段个数 查询回显位 查询数据库名 查询表.字段名 查询内容 判断注入类型 1.数字型注入点判断 当要输入的参数x为数字型时,后端脚本中 ...
- 用openpyxl创建工作簿和工作表
import osimport openpyxl #设置默认路径os.chdir(r'D:/openpyxl/') #创建工作簿变量 wb = openpyxl.Workbook() #创建工作表变量 ...
- 第三方模块 request openpyxl
目录 第三方模块的下载 pip工具 简介 pip使用注意 pip位置和环境变量设置 pip安装第三方模块 使用pip下载可能会遇到的问题 pycharm的第三方模块下载功能 request模块 req ...
- day01-家具网购项目说明
家具网购项目说明 1.项目前置技术 Java基础 正则表达式 Mysql JDBC 数据库连接池技术 满汉楼项目(包括框架图) JavaWeb 2.相关说明 这里先使用原生的servlet/过滤器,后 ...
- EXACT函数
EXACT函数:EXACT函数是一个文本函数,通过这个函数可以将不同的字符串进行对比,通常用于信息核对. EXACT函数的功能:比较两个字符串是否一致,返回不同的结果. EXACT函数的语法结构:EX ...
- c++随笔测试(Corner of cpp)
在c++17下,程序的输出是什么?(有可能编译出错,有可能输出未知,有可能是未定义行为) 点击查看代码 #include<iostream> void foo(unsigned int) ...
- 【爬虫+数据分析+数据可视化】python数据分析全流程《2021胡润百富榜》榜单数据!
目录 一.爬虫 1.1 爬取目标 1.2 分析页面 1.3 爬虫代码 1.4 结果数据 二.数据分析 2.1 导入库 2.2 数据概况 2.3 可视化分析 2.3.1 财富分布 2.3.2 年龄分布 ...
- Java学习笔记:2022年1月8日
Java学习笔记:2022年1月8日 摘要:这天主要学习了HTML超文本标记语言以及CSS层叠样式表的基本知识,主要就是通过这两种技术进行基本的网页渲染. 目录 Java学习笔记:2022年1月8日 ...
- 【LGR-125】洛谷 11 月月赛 I & JROI-7 & JRKSJ-5
P8846 『JROI-7』PMK 配匹串符字 简要题意 给出一正整数 \(n(1 \leq n \leq 10^5)\),求出一个由小写英文字母组成的字符串 \(S\),使得 \(|S|=n\) 且 ...
- 2.PyQt5【窗口组件】对话框-Dialog
一.前言 QDialog 类是对话框窗口的基类.对话框窗口是主要用于短期任务以及和用户进行简要 通讯的顶级窗口.QDialog 可以是模态对话框也可以是非模态对话框.QDialog 支持扩展性并 且可 ...