技术标签: 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的相关指令可以使用搜索引擎进行搜索学习。以下附上一些文章:
文章浏览阅读76次。作者:禅与计算机程序设计艺术 1.背景介绍目前,越来越多的企业需要建立自己的内部平台、产品或服务,这些平台都需要对外提供服务,如何保证数据安全、身份认证和授权?在这里,“安全”成为一个重要的问题。本文将从SAML(Security Assertion Markup Language)协议的角度出发_saml認証
文章浏览阅读211次。Linux 学习笔记(6)权限管理RHEL里面执行ls命令时,可以看见第一个字母来判断类型。常见的类型有d (目录)- (普通文件)c (设备文件 字符型)b (设备文件,块文件)l ( 软连接,快捷方式)例如,目录和普通文件设备文件软连接设备文件,块文件(硬盘)首先看看如何更改文件的所有者 chown, -R表示递归的处理所有的子目录和子文件,-v表示输出详细的变化结果更改文件或者目录的组具体的..._linux综合实践6
文章浏览阅读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
文章浏览阅读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..._蚂蚁怎么修改网站源代码
文章浏览阅读7.7k次,点赞6次,收藏16次。PMP习题_一个组织在历史上一直使用预测性方法
文章浏览阅读2w次,点赞19次,收藏43次。前叙本来想要研究mint-ui组件库的Lazy load组件,没想到翻看它的源码,发现它完全引用的vue-lazyload项目,直接引用,没有丝毫修改。 因此转而研究vue-lazyload,代码并不多,几百行吧,有兴趣的可以读一下。简单接入示例html代码:
文章浏览阅读1.9k次。通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的:这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图。八面体我们先以下面这个八面体为例。1 安装相关包首先安装两个必备包:import pyrr # NumPy 的 3D 函数库import svgwrite # svg图形处理库2 定义 3D 图生成环境接下来定义几个类设置好 3 维图..._python三维图形渲染
文章浏览阅读159次。根据单元格是含有的字符来设置整行格式如下:_字符型格式 wps表格
文章浏览阅读111次。1.关于Flex+java整合有三种方式配置,其原理大致相同 首先需要blazeds从官网上可以下载http://www.adobe.com 第一种: myeclipse 工具中新建web项目. Flex_Service 作为后台服务项目 右击WebRoot --import --- file System 选择你的blazeds.war解压成一个文件夹 完成 新建类..._java整合flex开发入门
文章浏览阅读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 频率设置
文章浏览阅读4.4k次。文章目录1.问题描述2.解决方案1.问题描述在Ubuntu系统下使用GMT绘图时出现:2.解决方案百度了一下发现大多没有解决我的问题,而且关于这个bug的问题似乎讨论的比较少。所以,通过科学上网后我寻找到了解决方案(我的解决啦,各位可以尝试一下),另外,提示:Qt5移除了相应的configure文件,可能会出现找不到相应文件的情况。你可以将下面代码写入环境变量中(我写入的是~/.profile文件中),source一下就可以啦,source不起作用可以重新登陆用户。export QT_LOG_qt5ct: using qt5ct plugin
文章浏览阅读212次。线程、线程池创建使用、异步编排_arrayblockingqueue<>(100000)