zoukankan      html  css  js  c++  java
  • 使用Dump转储文件排查线上环境服务未知问题

    利用Dump转储文件获取正式环境程序堆栈状态

    服务异常找不到原因时,我们通常通过重新启动服务来尝试解决问题,但是在决定重启之前,请不要立刻重启Windows服务或站点

    重启服务会让当前案发现场的内存证据丢失,即便是服务恢复正常了,也无法确认问题发生的原因,利用 Windows Dump 转储文件,可以将正在运行中的服务或站点的堆栈信息保存下来,然后在Visual Studio或WinDbg来查看线上服务的对象信息

    Dump转储文件生成

    Dump转储文件可以通过 任务管理器 -> 进程 -> 右击指定进程 -> 创建转储文件 生成

    创建成功后会提示Dump存储文件保存位置:



    需要注意的是,创建Dump转储文件的过程,程序的所有线程将会被暂停,此时程序将无法进行响应

    Dump转储文件创建的时间跟程序占用内存成正比,如果程序占用内存过大,将会创建失败,需要使用其他工具来创建

    使用Visual Studio调试转储文件

    转储后的DMP文件可以使用Visual Studio直接调试,但是VS并没有对 .DMP 格式绑定操作

    打开Visaul Studio后在 打开 -> 文件 -> 选择.DMP文件,将会出现以下界面:





    VS中支持DUMP转储文件进行原生VC,VC++调试,也可以进行托管代码调试,对于大部分.NET程序,使用 调试托管内存 会更加方便
    选择 调试托管内存 ,VS将会加载DMP文件中所有对象信息,等待片刻之后可以看到堆栈信息

    托管内存调试支持查看当前线程的局部变量,在监视视图里面查看静态类内的私有字段,使用即时窗口执行C#代码

    以上代码为排查配置文件获取配置为空问题,可以看到 ConfigHelper 中已经缓存的所有配置,部分配置项为空,修改配置文件重启程序即可

  • 相关阅读:
    三种方式重启NGINX 简单
    转MongoDB、HandlerSocket和MySQL性能测试及其结果分析 简单
    php ini_set post_max_size,upload_max_filesize 简单
    grep 命令 简单
    ANSI,GBK,UTF8,UTF16LE,UTF16BE 简单
    提升工作效率软件 简单
    会议记录 简单
    第一章 :zabbix监控
    第七章 :分布式监控与SNMP监控
    linux系统安装SNMP(可用)
  • 原文地址:https://www.cnblogs.com/Gool/p/9810124.html
Copyright © 2011-2022 走看看