最近公司某一台WSUS服务器出现内存过高报警,下班后将这台机器重启了。结果第二天又出现内存不足的情况。看样子不是偶发状况,必须处理才行。 登录机器发现sqlserver.exe和w3wp.exe这两个进程占用大量内存。 sqlserver.exe是数据库程序,这台机器使用内置wid数据库,没有使用sqlserver,无法使用sqlserver management客户端连接进行设定,只能使用微软发布的sqlcmd工具设置。 sqlcmd使用sqlodbc接口访问内置数据库,还需要安装sqlodbc驱动,而该驱动依赖Visual C++ 2017运行库,下载这三个文件VC_redist.x64.exe、msodbcsql.msi和MsSqlCmdLnUtils.msi。然后依序安装即可。 安装完成后,开启一个cmd窗口,输入如下命令连接内置数据库 sqlcmd -E -S \\.\pipe\Microsoft##WID\tsql\query 登录成功后会出现提示符1> 然后输入如下命令显示高级选项 exec sp_configure 'show advanced option', '1'; reconfigure; exec sp_configure; go 然后会显示内置数据库的设定 输入如下命令将内置数据库内存占用调整为4G,这个可以根据各自的服务器来调整。 exec sp_configure 'max server memory', 4096; reconfigure with override; go 执行成功会会有提示,完成后输入quit退出。 这时候在资源管理器里已经能看到sqlserver.exe的内存占用下降到4G。 接下来设置iis服务的内存上限,以解决w3wp.exe的内存占用过大的问题。 打开Internet Infomation Services (IIS) Manager 在服务中点开Application Pools中右键WsusPool,在弹出菜单中点击Advanced Settings。 在Recyling类别中找到Private Memory Limit (KB),设置一个内存上限值,这里单位是KB,大家自己用计算机算一下,我这里给到4G,就是4*1024*1024=419430