一文解读使用WinDbg排查iis 中CPU占用高的站点问题

一、概述

在Window服务器部署程序后,可能因为代码的不合理或者其他各种各样的问题,会导致CPU暴增,甚至达到100%等情况,严重危及到服务器的稳定以及系统稳定,但是一般来说对于已发布的程序,没法即时看到出问题的代码,而微软提供了一个很好的工具“WinDbg”,使得我们能够回溯问题。下面讲一下操作步骤。

 

二、操作步骤

1. 下载软件:

  下载地址:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools

  

 

2. 安装

  只需要选择:Debugging Tools for Windows 即可。  

  

 

3. EXE位置

  {安装目录}/Debugger/{x64 || x86}/windbg.exe

 

4. 获取DMP文件

(1)打开任务管理器

(2)选择CPU较高的进程

(3)右键“创建转储文件”

(4)获取最后的目录位置,拿到DMP文件即可

  

 

5. 查看有问题的进程(已准备w3wp.DMP文件)

(1)打开windbg.exe

(2)将w3wp.DMP 拖入窗口

(3)输入指令加载sos clr

  .loadby sos clr

(4)检查clr版本是否一致

  !clrstack

  下图表示clr不存在或者版本不一致

  

 

  

  这个时候就需要将DMP文件所在服务器的sos.dll clr.dll mscordacwks.dll 三个dll拷贝下来,所在位置:C:\Windows\Microsoft.NET\Framework?\version?\SOS.dll 同目录下

  放到一个目录中:【D:\windb\dll】,以下指令用于指定对应的sos.dll,clr.dll

  .cordll -lp D:\windb\dll

  

 

(5)获取执行时间很长的线程

  !runaway

  

  可以看到前几个线程执行了很长时间没有结束掉,那么我们就进入这个线程,查看具体的堆栈信息

(6)进入线程

  ~{threadId}s => ~61s

  

 

(7)查看堆栈信息

  !clrstack

  

  上图即可看到对应的一些自定义的代码,即可根据这些代码分析哪块代码写得不合理,也还可以点击进入查看详细的信息

  

 

 

6. 以上为简单的查看CPU过高的简单解决方案案例,对于WinDbg的相关指令可以使用搜索引擎进行搜索学习。以下附上一些文章:

 

 

https://blog.csdn.net/iwilldoitx/article/details/81048500

 

https://www.cnblogs.com/huangsitao/p/10299300.html

往期精彩回顾



  • 【.net core】电商平台升级之微服务架构应用实战

  • .Net Core微服务架构技术栈的那些事

  • Asp.Net Core 中IdentityServer4 授权中心之应用实战

  • Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式

  • Asp.Net Core 中IdentityServer4 授权流程及刷新Token

  • Asp.Net Core 中IdentityServer4 实战之 Claim详解

  • Asp.Net Core 中IdentityServer4 实战之角色授权详解

  • Asp.Net Core 中间件应用实战中你不知道的那些事

  • Asp.Net Core Filter 深入浅出的那些事-AOP

  • Asp.Net Core EndPoint 终结点路由工作原理解读

  • ASP.NET CORE 内置的IOC解读及使用


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Power Network POJ - 1459(EK算法模板+详解)

题意: 总共有a个节点,其中有发电站b个、用户c个和调度器a-b-c个三种节点,每个发电站有一个最大发电量,每个用户有个最大接受电量,现在有d条有向边,边有一个最大的流量代表,最多可以流出这么多电…

[C++11]shared_ptr共享智能指针的初始化与使用

使用智能指针需要添加头文件: 代码如下: #include <memory>shared_ptr使用的注意事项: 1.不能使用一个原始地址初始化多个共享智能指针 2.函数不能返回管理了this的共享智能指针对象 3.共享智能指针不能循环引用 初始化: 1.通过构造函数初始化 代码如下: std::shar…

ap计算机科学课程内容,AP计算机科学课程补习有哪些知识点梳理?

计算机作为当前最被看好的一大专业领域&#xff0c;很多同学们在AP课程学习期间会选修AP计算机科学课程补习这门课来帮助自己打好知识基础。那么AP计算机科学课程补习有哪些知识点梳理?今天学通国际教育老师为大家介绍。1. Introductory Java Language FeaturesPackage And Cl…

人在职场,表达似水

最近几天集中在和部门内的小伙伴做1&#xff1a;1Talk。发现有不少人表达能力真的不是很好&#xff0c;而且水平长期停滞不前。现场与他们分享了一些我的经验&#xff0c;趁热打铁也想在这里分享给大家。表达能力不好本身就是做技术的人身上的一个常见标签。如果仅仅是标签也就…

计算机网络原理习题

下一跳路由器计算 设某路由器建立了如下路由表&#xff08;这三列分别是目的网络、子网掩码和下一跳路由器&#xff0c;若直接交付则最后一列表示应当从哪一个接口转发出去&#xff09;&#xff1a; 128.96.39.0 255.255.255.128 接口0 128.96.39.128 255.255.255.128 接口1…

[C++11]弱引用智能指针weak_ptr初始化和相关的操作函数

弱引用智能指针 std::weak_ptr 可以看做是 shared_ptr 的助手&#xff0c;它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符 * 和 ->&#xff0c;因为它不共享指针&#xff0c;不能操作资源&#xff0c;所以它的构造不会增加引用计数&#xff0c;析构也不会减…

电子科技大学计算机网络技术专业,计算机专业前景如何?最强十大高校有哪些?电子科大排名多少?...

近几年计算机专业以及与计算机相关的专业可谓是火的不能再火&#xff0c;越来越多的考生在高考时选择了计算机专业或者与计算机相关的专业&#xff01;事实也是如此&#xff0c;随着科技的进步&#xff0c;信息技术的迅猛发展&#xff0c;特别是计算机技术的发展&#xff0c;以…

写一个简版 asp.net core

动手写一个简版 asp.net coreIntro之前看到过蒋金楠老师的一篇 200 行代码带你了解 asp.net core 框架&#xff0c;最近参考蒋老师和 Edison 的文章和代码&#xff0c;结合自己对 asp.net core 的理解 &#xff0c;最近自己写了一个 MiniAspNetCore &#xff0c;写篇文章总结一…

Enlarge GCD CodeForces - 1034A(欧拉筛+最大公约数)

题意&#xff1a; 给出n个数&#xff0c;删去其中一些使得总的gcd(最大公约数)最大 题目&#xff1a; Mr. F has n positive integers, a1,a2,…,an. He thinks the greatest common divisor of these integers is too small. So he wants to enlarge it by removing some …

网桥工作在计算机网络的,网桥的作用和工作原理是什么

网络像一个巨大的蜘蛛网&#xff0c;连接着我们每个人的生活。对于网络&#xff0c;我们看不见也摸不着&#xff0c;但是却离不开它。无形的网络到底是怎么运作的呢?我们是如何通过网络实现人与人之间的交流的呢?今天小编就给大家普及一下网桥的知识&#xff0c;网桥在计算机…

[C++11]独占的智能指针unique_ptr的删除器

unique_ptr 指定删除器和 shared_ptr 指定删除器是有区别的&#xff0c;unique_ptr 指定删除器的时候需要确定删除器的类型&#xff0c;所以不能像 shared_ptr 那样直接指定删除器&#xff0c;举例说明&#xff1a; 代码如下: #include <iostream> #include <memory…

如何在Windows上使用Git创建一个可执行脚本?

长话短说&#xff0c;今天介绍如何在windows上使用Git上创建一个可执行的shell脚本。“首先我们要知道windows上Git默认添加的文件权限是:-rw-r--r--(对应权限值是644)&#xff0c;而通常创建的shell脚本都希望天然可执行&#xff0c;故有必要在Windows上使用Git管理shell脚本时…

计算机公共基础知识实验报告,20140902413 李雪瑞 计算机工程系实验报告345.docx...

20140902413 李雪瑞 计算机工程系实验报告345计算机工程系实验报告课程名称&#xff1a;Java程序设计成 绩&#xff1a;实验项目名称&#xff1a;JAVA语言实现面向对象编程基础指导教师&#xff1a;(签名)班级: 计科14-4班姓名: 李雪瑞学号: 20140902413一、实 验 目 的: 1. 通…

Most Unstable Array CodeForces - 1353A(数学+贪心+建设性算法)

题意&#xff1a; 给定 n, m&#xff0c;构造出一个长度为 n 的数组 a&#xff0c;使得数组的和为 m&#xff0c;在此条件下∑i1n−1∣ai−ai−1∣\sum_{i1}^{n-1}|a_{i}−a_{i-1}|i1∑n−1​∣ai​−ai−1​∣ 最大是多少&#xff1f; 题目&#xff1a; You are given two …

[C++11]共享智能指针shared_ptr指定删除器

当智能指针管理的内存对应的引用计数变为 0 的时候&#xff0c;这块内存就会被智能指针析构掉了。另外&#xff0c;我们在初始化智能指针的时候也可以自己指定删除动作&#xff0c;这个删除操作对应的函数被称之为删除器&#xff0c;这个删除器函数本质是一个回调函数&#xff…

基于 abp vNext 和 .NET Core 开发博客项目 - 再说Swagger,分组、描述、小绿锁

在开始本篇正文之前&#xff0c;解决一个 疯疯过 指出的错误&#xff0c;再次感谢指正。步骤如下&#xff1a;删掉.Domain.Shared层中的项目引用&#xff0c;添加nuget依赖包Volo.Abp.Identity.Domain.Shared&#xff0c;可以使用命令&#xff1a;Install-Package Volo.Abp.Ide…

[C++11]独占的智能指针unique_ptr的初始化和使用

std::unique_ptr 是一个独占型的智能指针&#xff0c;它不允许其他的智能指针共享其内部的指针&#xff0c;可以通过它的构造函数初始化一个独占智能指针对象&#xff0c;但是不允许通过赋值将一个 unique_ptr 赋值给另一个 unique_ptr。std::unique_ptr 不允许复制&#xff0c…

Two Arrays And Swaps CodeForces - 1353B(贪心+分类)

题意&#xff1a; 给定两个数组&#xff0c;你可以交换 k 次 两个数组的元素&#xff0c;问最后 a 数组的和最大可以是多少&#xff1f; 题目&#xff1a; You are given two arrays a and b both consisting of n positive (greater than zero) integers. You are also giv…

Abp v2.8.0发布 路线图

ABP框架和ABP商业版v2.8已经发布.这篇文章将涵盖这些发布中的新增内容和项目的中期路线图.ABP框架2.8有哪些新增内容?你可在GitHub的发行说明中看到所有的变更.这篇博客只包括重要的一些功能/变更.SignalR集成包我们已经发布了一个新的包用来集成SignalR到基于ABP框架应用程序…

贵州大学计算机专业的导师是谁,贵州大学计算机科学与信息学院导师介绍:王以松...

贵州大学计算机科学与信息学院导师介绍&#xff1a;王以松王以松&#xff0c;男&#xff0c;副教授&#xff0c;硕士研究生导师。主要研究方向&#xff1a;人工智能(知识表示与推理、逻辑程序设计)&#xff0c;语义网络等。 Em作者佚名次阅读2012-01-04王以松&#xff0c;男&am…