码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • docker下netcore内存dump


    一般开发阶段可以通过visualstudio来检查程序的内存 、cup等的优化问题。vs下调试=》性能探查器,这里面大有千秋。

    但是好多内存问题是经过时间积累下来才暴露出来的,在生产环境中不做不了这些操作了。

    在linux裸机下面的内存泄漏排查微软官网是有详细说明的,按照操作来就可以了。教程如下:

    调试内存泄漏教程 | Microsoft Learn

     

    但是部署在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下面的操作都是一笔带过,这里就靠各位大佬的总结,所以看着官方文档找到自己需要解决问题的工具,再去搜索对应的用法,还是能解决实际生产的问题。

  • 相关阅读:
    篇(18)-Asp.Net Core入门实战-文章管理之文章内容管理(下拉框二级结构递归)
    【HTML+CSS】实现网页的导航栏和下拉菜单
    【UE 粒子练习】03——创建一个GPU粒子
    速卖通、阿里巴巴国际站测评补单技巧分享,需要哪些技术要求
    HHDBCS监控功能
    设计模式 - 组合模式理解及示例
    词法分析考试做题必备注意点!
    [腾讯云 Cloud Studio 实战训练营] 云上编程的革命:我的 Cloud Studio 体验之旅
    【设计模式】建造者模式
    VMware——WindowServer2012R2环境安装mysql5.7.14解压版_互为主从(图解版)
  • 原文地址:https://www.cnblogs.com/morec/p/17166092.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号