tcpsvcs.exe使用超高虚拟内存的解决方法

故障现象:

        公司有一台用于DHCP服务+文件共享服务的服务器,操作系统为windows server 2003 企业版+SP2。打开任务管理器,发现一名为tcpsvcs.exe的进程,占用了约1.9G的虚拟内存。而与其使用类似功能的另一服务器,该进程只使用了不到10M的虚拟内存,差距巨大,明显异常。

故障处理过程及原因:

        上网查找tcpsvcs.exe的相关信息,得到的解释的是:“tcpsvcs.exe是微软Windows网络组件的一部分。这个系统进程用于计算机使用专用的TCP/IP网络服务,例如DHCP,简单TCP和打印服务。这个程序对你系统的正常运行是非常重要的。”

进一步,打开命令提示符窗口,运行 tasklist /svc 命令,查看各进程所关联的服务,看到如下的结果:

svchost.exe                   1904 TapiSrv
svchost.exe                   1916 TermService
tcpsvcs.exe                   2032 DHCPServer
mcshield.exe                  2076 McShield
svchost.exe                   2240 W3SVC

可见,在本机上,tcpsvcs.exe只与DHCP服务有关。

尝试将DHCP服务重启,发现虚拟内存立即恢复至正常。第二天一早,再次查看,发现虚拟内存又达到了1.9G。和另一台正常的DHCP服务器,比较DHCP服务中设置的相关参数,未发现异常。

求助于互联网这个百科全书,输入相关内容进行搜索,并没有发现什么有价值的内容。又访问微软的支持与帮助中心http://support.microsoft.com ,经查找,发现了一条与我所述情况非常接近的知识库文章 http://support.microsoft.com/kb/939928/zh-cn 。按该文章的说法:“因为 Dnsapi.dll 模块未正确管理一些内存资源,将出现此问题。”而且,如果关闭DHCP配置参数中的DNS动态更新设置,这个问题就不会出现。经测试,发现我的情况确实如此。

解决方法:

         方法一:禁用DHCP的DNS动态更新功能

         1、单击开始,单击运行,键入dhcpmgmt.msc,然后单击确定
         2、在控制台树中,用鼠标右键单击对应于 DHCP 服务器的节点,然后单击属性
         3、在DNS选项卡上,单击以清除根据下面的设置启用 DNS 动态更新复选框,然后单击确定

         4、重新启动 DHCP 服务器服务。例如,在命令提示符下键入以下命令,然后按 ENTER 键:Net stop DHCPServer & & Net start DHCPServer

         这个方法适合于没有DNS动态更新需要的情况。但如果有内部的DNS服务,且需要通过DHCP服务,将DHCP客户端的机器名与IP地址的映射关系更新到DNS服务中,以实现通过机器名访问内部电脑的需求的话,这个功能是不能禁用的。

          方法二:更新补丁

          微软已针对该问题有了补丁,但由于windows server 2003 的SP3 服务包还没有发布,所以,只能单独下载。下载的方法如下:

        1、打开该知识库文章 http://support.microsoft.com/kb/939928/zh-cn

        2、点击页面上端的“可用热修复补丁程序”后,会自动跳转至相应的下载页面。

        3、选择相应版本的补丁程序,并输入你的邮箱地址并提交后。会将相应的下载地址发到你填写的邮箱中。按邮件的说明和链接下载即可。

        这个方法是根本的解决之道。但也有一定的风险,如果选择版本错误,或者因为一些其它原因,安装后,可能会出现其它的问题。所以,用这个方法前,一定要仔细确认你的问题,是否与知识库文章中所述的一致,确认选择的补丁版本是正确的,确认你的windows server 2003 是已经打了SP1或SP2的等。

你可能感兴趣的:(2003,DHCP,虚拟内存,tcpsvcs.exe)