w3wp CPU 100%问题解决
问题:
web服务器w3wp CPU占用率非常高,导致整个服务器CPU 100%占用,问题无法正常重现
解决方法:
--问题尚未解决,此处记录目前的解决状态
1)下载windbg
参考https://blog.csdn.net/johnsonblog/article/details/8165861
最终的下载地址:
http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi
2)将windlb安装在服务器(本地也可以),内存转储文件可能很大(G级别),推荐直接安装在服务器,避免复制dmp文件
默认目录为:C:\Program Files\Debugging Tools for Windows (x64)
3)创建进程转储问题,找到cpu占用最高的w3wp,右键,创建转储文件,若成功,则会提示转储文件的地址,一般放在C:\Users\Administrator\AppData\Local\Temp\X
4) 用windbg打开转储文件分析,打开的菜单为Fille->Open Crash Dump 或者按Ctrl + D
5) 输入命令分析,找到正在执行的代码
参考:https://improve.dk/debugging-in-production-part-1-analyzing-100-cpu-usage-using-windbg/
概要:
在打开的窗口下面的输入框中依次输入:
加载dotNet分析工具: !loadby sos clr
查到正在运行的线程: !runaway
运行这个命令后,找到执行时间最长的线程,一般是第一个,找到线程的id
选择线程,输入:~Xs 将X换成线程Id
加载线程的调用堆栈:!CLRStack
现在可以看到代码了。
---
服务器dump了一个,CLRStatck的时候报错:
PDB symbol for clr.dll not loaded,查看资料是 mscordacwks.dll版本不匹配,研究了半天,没搞定
https://github.com/Microsoft/WinObjC/wiki/Debugging-Stack-Traces-from-Crash-Dumps
最后,安装了Windbg Preview(直接在win10市场中安装),用其打开dump文件,输入几个命令后,它自己下载了符号文件,命令终于可以运行了。
最终发现问题是老代码有个地方用到了静态的Dictionary<>,Dictionary<>不是线程安全的,不应该作为静态字段用在web程序中。
000000397797d7c0 00007ffdabdb8d2e System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].FindEntry(System.__Canon)
000000397797d830 00007ffd519cca81 ModelBLL.GetModel(System.String)
w3wp CPU 100%问题解决的更多相关文章
- 数据库CPU 100%处理记录
问题描述 2020年7月13日一大早收到告警,测试环境数据库CPU告警. 登录aws查看监控如下图 问题分析 出现这种cpu 100%的问题,都是因为sql性能问题导致的, 主要表现于 cpu 消 ...
- 解决new Thread().Start导致高并发CPU 100%的问题
背景 之前接手一个项目的时候,发现到处是 new Thread(()=>{ //do something }).Start(); 这么做的目的,无非是为了减少页面等待时间提高用户体验,把一些浪费 ...
- xinetd cpu 100%
今天,有个给客户试用的环境出现xinetd cpu 100%,而且连续运行很长时间了.之前也有环境发生过,今天排查解决了三四个问题,实在是查的身体都不舒服了,还没时间查这个问题... 知道的求解...
- [Java] CPU 100% 原因查找解决
CPU 100%肯定是出现死锁,这个时候观察内存还是够用的,但是CPU一直100%,以下几步解决: 1. 找到进程消耗cpu最大的 $top top - :: up days, :, user, lo ...
- [转]不正当使用HashMap导致cpu 100%的问题追究
以前项目中遇到类似业务,但使用的是CurrentHashMap,看到这篇文章,转载记录,警示自己. 以下内容转自: 转载自并发编程网 – ifeve.com(http://ifeve.com/hash ...
- 云计算之路-阿里云上:2014年6月11日17点遇到的CPU 100%状况
今天下午17:00-17:05之间,在请求量没有明显变化的情况下,SLB中的1台云服务器的CPU突然串到100%(当时SLB中一共有3台云服务器),见下图: 造成的直接后果是请求执行时间变得超长,最长 ...
- Linux系统cpu 100%修复案例
Linux系统cpu 100%修复案例 阿里云技术支持团队:完颜镇江 案例背景: Linux主机连续三天CPU% 处理思路: 1. 登录服务器查看/var/log/messages+/var/lo ...
- how to debug thread cpu 100%
when we write a program, cpu and memory usages are very important to indicate the stability of the p ...
- SQL Server Cpu 100% 的常见原因及优化
SQL Server Cpu 100% 的情况并不太常见,一般引起 SQL Server 产生性能问题的,都是 阻塞.连接数.IO 磁盘等.所以,一般SQL Server 的使用率都是比较低的.但是, ...
随机推荐
- Mysql数据库学习总结(一)
数据库概念 数据库(Database)是按照数据结构来组织.存储和管理数据,建立在计算机存储设备上的仓库. 简单说,数据库就是存放数据的仓库.和图书馆存放书籍.粮仓存放粮食类似. 数据库分类 分为 关 ...
- int _tmain(int argc, _TCHAR* argv[])
int _tmain(int argc, _TCHAR* argv[]){ int i; for (i = 0; i<argc; i++) cout<<argv[i]<< ...
- hive 报错FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient FAILED: Execu
使用hive一段时间以后,今天在使用的时候突然报错,如下: hive> show databases;FAILED: Error in metadata: java.lang.RuntimeEx ...
- 【远程重启】使用windows自带的shutdown命令远程重启服务器(测试不行,此文作废)
net use \\IP \ipc$ "password" /user:"username" shutdown -r -m \\IP -t 0 -f 添加远程关 ...
- C语言标准库之setjmp
协程的介绍 协程(coroutine),意思就是“协作的例程”(co-operative routines),最早由Melvin Conway在1963年提出并实现.跟主流程序语言中的线程不一样,线程 ...
- IOS UIView动画(封装动画)
● UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView 将为这些改变提供动画支持 ● 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视 图, ...
- innobackupex备份脚本
#!/bin/bash # 10 23 * * * /bin/bash /data/script/backup.sh BDATE=`date +%Y%m%d%H%M%S`BPATH=/data/bac ...
- hdu-2680 Choose the best route---dijkstra+反向存图或者建立超级源点
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目大意: 给你一个有向图,一个起点集合,一个终点,求最短路 解题思路: 1.自己多加一个超级 ...
- javaweb基础(29)_EL表达式
一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...
- java设计模式——单例模式(二)
破坏单例模式 上一章节,介绍了单例模式的几种方式,这次来学习一波我们创建的单例模式是否安全,能不能破坏.换句话说,也就是在程序运行中,不止有一个实例. 一. 序列化,反序列化破坏 以饿汉式的单例模式 ...