window服务器cpu过高的排查_WinDbg排查CPU高的问题-程序员宅基地

技术标签: window服务器cpu过高的排查  

一、概述

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

二、操作步骤

1. 下载软件:

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的相关指令可以使用搜索引擎进行搜索学习。以下附上一些文章:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39611208/article/details/111809256

智能推荐

开放平台实现安全的身份认证与授权原理与实战:SAML完全解析_saml認証-程序员宅基地

文章浏览阅读76次。作者:禅与计算机程序设计艺术 1.背景介绍目前,越来越多的企业需要建立自己的内部平台、产品或服务,这些平台都需要对外提供服务,如何保证数据安全、身份认证和授权?在这里,“安全”成为一个重要的问题。本文将从SAML(Security Assertion Markup Language)协议的角度出发_saml認証

linux实训6权限管理,Linux 学习笔记(6)权限管理-程序员宅基地

文章浏览阅读211次。Linux 学习笔记(6)权限管理RHEL里面执行ls命令时,可以看见第一个字母来判断类型。常见的类型有d (目录)- (普通文件)c (设备文件 字符型)b (设备文件,块文件)l ( 软连接,快捷方式)例如,目录和普通文件设备文件软连接设备文件,块文件(硬盘)首先看看如何更改文件的所有者 chown, -R表示递归的处理所有的子目录和子文件,-v表示输出详细的变化结果更改文件或者目录的组具体的..._linux综合实践6

getline()_getinline-程序员宅基地

文章浏览阅读4.8k次,点赞4次,收藏6次。int main(){ string line: while(getline(cin,line)) cout<<line<<endl; return 0;}getline()的原型:头文件:#include <string>istream& getline ( istream &i..._getinline

java如何实现etc,如何使用蚂蚁来检查java源代码(TODO:etc)-程序员宅基地

文章浏览阅读202次。it's common to see something like this in code, hopefully only during development://XXX: not in production!String password = "hello"; // getActualPassword(...);...catch(Exception e) { /* TODO: Auto-ge..._蚂蚁怎么修改网站源代码

PMP考前冲刺题2022(正题)含解析_一个组织在历史上一直使用预测性方法-程序员宅基地

文章浏览阅读7.7k次,点赞6次,收藏16次。PMP习题_一个组织在历史上一直使用预测性方法

Vue-lazyload原理详解之源码解析_vue-lazyload的原理-程序员宅基地

文章浏览阅读2w次,点赞19次,收藏43次。前叙本来想要研究mint-ui组件库的Lazy load组件,没想到翻看它的源码,发现它完全引用的vue-lazyload项目,直接引用,没有丝毫修改。 因此转而研究vue-lazyload,代码并不多,几百行吧,有兴趣的可以读一下。简单接入示例html代码:

随便推点

python三维图形渲染-Python 竟能绘制如此酷炫的三维图-程序员宅基地

文章浏览阅读1.9k次。通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的:这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图。八面体我们先以下面这个八面体为例。1 安装相关包首先安装两个必备包:import pyrr # NumPy 的 3D 函数库import svgwrite # svg图形处理库2 定义 3D 图生成环境接下来定义几个类设置好 3 维图..._python三维图形渲染

Excel、WPS表格条件格式根据字符设置行单元格式_字符型格式 wps表格-程序员宅基地

文章浏览阅读159次。根据单元格是含有的字符来设置整行格式如下:_字符型格式 wps表格

Flex与java 整合入门配置-程序员宅基地

文章浏览阅读111次。1.关于Flex+java整合有三种方式配置,其原理大致相同 首先需要blazeds从官网上可以下载http://www.adobe.com 第一种: myeclipse 工具中新建web项目. Flex_Service 作为后台服务项目 右击WebRoot --import --- file System 选择你的blazeds.war解压成一个文件夹 完成 新建类..._java整合flex开发入门

TQ15EG开发板教程:开发板Vivado硬件设置_vivado ddr4 频率设置-程序员宅基地

文章浏览阅读884次,点赞27次,收藏24次。(0)Cas Wirte xx: 这里是设置的12就可以,从上图看出DDR2400,这里要看他支持那些,这里选择常用的12。在 Output Clocks 窗口,如果不是 IOPLL,改成 IOPLL,保持一致,用同样的 PLL。我们按照2400的频率来配置;下面是几个比较重要的时间,然后其实都是在手册里面,然后还是先找到对应的83E,然后找到你要的时间。(2)位宽看你选择的是512x16还是1Gx8,这里我们选择是前者,所以16。第六步,配置PS端的高速外设以太网,usb,dp,sata接口。_vivado ddr4 频率设置

解决Qt5出现qt5ct using qt5ct plugin qt5ct d-bus global menu no_qt5ct: using qt5ct plugin-程序员宅基地

文章浏览阅读4.4k次。文章目录1.问题描述2.解决方案1.问题描述在Ubuntu系统下使用GMT绘图时出现:2.解决方案百度了一下发现大多没有解决我的问题,而且关于这个bug的问题似乎讨论的比较少。所以,通过科学上网后我寻找到了解决方案(我的解决啦,各位可以尝试一下),另外,提示:Qt5移除了相应的configure文件,可能会出现找不到相应文件的情况。你可以将下面代码写入环境变量中(我写入的是~/.profile文件中),source一下就可以啦,source不起作用可以重新登陆用户。export QT_LOG_qt5ct: using qt5ct plugin

线程&线程池&异步编排_arrayblockingqueue<>(100000)-程序员宅基地

文章浏览阅读212次。线程、线程池创建使用、异步编排_arrayblockingqueue<>(100000)