1. 问题表象+分析

最开始是DB访问性能下降,某个不用Cache、直接到DB的查询10s+都不返回。上去一看,DB Server内存97%,可用内存才100多M。

Windows毕竟不是iOS,不留出足够的内存跑起来还是很吃力的。我理解在核心程序全部常驻内存的情况下,至少还应留出10%的Ram,否则一旦涉及到读PageFile或者Disk,性能就会大幅下降。

这台机器是Server 2008 R2 64bit,4G的内存,确实比较小。但看了下进程列表,最大的才不到200M,大部分都只有几十M。大概估算一下应该不到4G。

在资源监视器里,把进程列表ctrl+A->copy到excel里一求和,总共才1.1G。那剩下的接近3个G去哪儿了?

上面这张图,Kernel Memory核心内存,显示Paged部分大约900M,Nonpaged部分有2.3G。看来这才是问题的关键了。

Google搜关键字kernel memory nonpaged high/leak,一大堆结果,尤其下面几篇文章,说的非常好:

接下去的诊断过程,基本是参照这几篇来的。

2. 诊断过程

2.1 先下载Windows Driver Kit

由于要用到poolmon.exe,所以要安装这个Driver Kit。下下来的wdksetup.exe是个在线安装器,这是Windows一贯的风格,这种方式解决依赖还是不错的,但网络环境一定要OK,不然断了只能从0开始,相当郁闷!

2.2 跑命令

可以选择下Stand alone的离线包,方便内网机的安装。不过好在poolmon.exe这个工具是没依赖的,装好直接copy到server上跑命令。

//能看到Tag = VNet的驱动占用了>2G的非分页核心内存
poolmon -p -b //如果进程管理器里,非页面缓冲池这一列没有高内存,基本可以肯定是驱动引起的,于是进入drivers目录
cd /d c:\windows\system32\drivers //这个命令出来很多乱码,一开始以为是mrxsmb组件有问题,但网上一搜没东西,hotfix也是针对win2012的
findstr /s VNet *.sys
mrxsmb.sys
mrxsmb10.sys
mrxsmb20.sys //去掉了很多类似的结果,这样显示清晰的多,看下来vnetflt.sys更可疑,这是个管理虚机的驱动
strings * | findstr VNet
c:\Windows\System32\drivers\mrxsmb.sys: Active VnetRoots-- %x VNetRoot %p
c:\Windows\System32\drivers\mrxsmb10.sys: Callback rdbss for create VNetRootCtxt
c:\Windows\System32\drivers\mrxsmb20.sys: MRxSmbCreateVNetRoot
c:\Windows\System32\drivers\rdbss.sys: RxCreateVNetRoot
c:\Windows\System32\drivers\vnetflt.sys: VNet
c:\Windows\System32\drivers\vnetflt.sys: VNet3
c:\Windows\System32\drivers\vnetflt.sys: VNetH

2.3 搜解决方案

vmware的KB里找到一篇相关的,说是暂时没有解决方法,但是有个workaround可以禁用这个驱动:在注册表里设置Start = 4。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\vnetflt]
Start=4

记得先备份reg,然后重启,观察3-5天,nonpaged不涨的话就OK了。

一次DB服务器性能低下引发的对Nonpaged Pool Leak问题的诊断的更多相关文章

  1. db服务器参数优化

    1.swap分区 swap作用是在系统内存不够的情况下,当做临时的内存使用. swap是在硬盘上,性能肯定没有再内存好,当系统内存使用超过40%的时候, swap会可能被使用,而系统一旦使用swap会 ...

  2. C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路

    C#不用union,而是有更好的方式实现   用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C# ...

  3. DB服务器中的参数优化

    1.swappiness 禁止系统使用swap空间,配置/etc/sysctl.conf中的vm.swappiness=0 2.Scheduler调度 Scheduler调度,指的是磁盘的IO调度算法 ...

  4. 转贴---Linux服务器性能评估

    http://fuliang.iteye.com/blog/1024360 http://unixhelp.ed.ac.uk/CGI/man-cgi?vmstat ------------------ ...

  5. 检查Linux服务器性能

    如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在? 概述通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. • uptime• ...

  6. 我为什么很烦在DB服务器上安装杀毒软件

    常见的数据库连接问题无外乎是在数据库服务器本地可以连接SQL Server,但通过其他服务器就不可以连接.但这次我却碰到了相反的情况,在服务器本地无法通过IP/实例名连接,但从其他服务器却可以.而且每 ...

  7. 用十条命令在一分钟内检查Linux服务器性能

    转自:http://www.infoq.com/cn/news/2015/12/linux-performance 如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出L ...

  8. Apache服务器性能监控

    Apache服务器性能监控 1.使用自带mod_status模块监控 1)加载mod_status.so 模块 在httpd.conf中打开LoadModule status_module modul ...

  9. JMeter 服务器性能监测插件介绍

    简介 压力测试过程中,能够随时对负载服务器的健康状况的把控是相当重要的,有了这些数据,我们才能准确分析出服务器负载瓶颈.当你面对的是一个集群的时候,如果能了解到负载是否被正确分发,是不是一件很棒的事情 ...

随机推荐

  1. JavaScript的chapterIII

    七.函数 函数由关键字function + 函数名 + 一组参数定义 函数可以被反复调用 语法: function funName( arg0,arg1,... argN){ statements; ...

  2. Kanzi Q&A

    Q:为什么我的kanzi studio安装完后无法编译apk? A:请安装jdk,并设置环境变量,并更新thirdpartsdk. Q:为什么使用路径无法读取到列表listbox内的列表项? A:列表 ...

  3. Ubuntu install g++

    We can use two ways to  install g++ on Ubuntu. 1.  a. sudo apt-get install make gcc g++.      b. sud ...

  4. 如何挂自己的web项目(免费拥有自己的网站及域名)

    http://www.blogjava.net/qingshow/archive/2010/01/17/309846.html ------------------------------------ ...

  5. PostGIS导入导出SHP文件常用命令

    SHP导入POSTGIS数据库 引用 直接导入数据库 shp2pgsql  -I -s 2437 -W GBK shop_point.shp public.ntable | psql -U postg ...

  6. 程序设计入门——C语言 第7周编程练习 2 鞍点(5分)(5分)

    2 鞍点(5分) 题目内容: 给定一个n*n矩阵A.矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数.一个矩阵A也可能没有鞍点. 你的任务是找出A的鞍点. 输入格 ...

  7. 程序设计入门——C语言 第7周编程练习 1多项式加法(5分)

    第7周编程练习 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  8. 解决hibernate删除时的异常

    由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了 deleted object would be re-saved by cascade (remove deleted ...

  9. Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****

    http://www.idouba.net/spring-cloud-source-eureka-client-api/?utm_source=tuicool&utm_medium=refer ...

  10. 20145218 GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 虚拟机中分析过程 输入gcc - g example.c -o example -m32指令在64位机器上产生32位汇编,但出现以下错误: 这时需要使用sudo apt-g ...