Windbg 分析内存上涨

症状:

上次一站点发布后,发现服务器内存持续上涨。正常本地缓存占了4-5个G ,使用内存直接涨到20G后应用程序池重启。

检查代码后发现,没有什么内存泄漏的地方。最后还是找来DUMP文件排查原因。

!dumpheap –stat       查看当前所有托管类型的统计信息

 

System.Threading.ReaderWriterCount 占了七个G。这是个读写锁, 有一亿多个对象。

!dumpheap –mt  000007fef32fa770        查看函数表地址中的各个对象信息

 然后查看其中一个对象

 

!gcroot  0xooooooo1f27e03b8 查找对象的根,需要很久的时间

 

 

这个是ReaderWriterLockSlim 的内部对象。

继续查找ReaderWriterLockSlim的根

!gcroot  00000001d09379d8

 

这是用引用框架DLL 内部的方法。

应该是什么原因造成创建了大量ReaderWriterLockSlim对象又没有释放。

找到原代码后发现,是由于注册了一个HttpModule 对每个不重复的访问目录进行记录,这个过程会对每个目录分配一个读写锁。

正好,上次另一个客端的更新,每次访问都加上随机后缀目录。造成大量的读写锁。

禁掉DLL 的这个功能后,问题解决。

转载于:https://www.cnblogs.com/zrhai/p/3793152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值