尝试在远程服务器上执行PerfMon跟踪时遇到问题。 服务器是Windows Server 2008 R2 SP1。 执行此跟踪的原因是,SQL Server似乎抓住了大量的内存,然后不释放回来。 这种行为并不令人惊讶,但我想知道什么时候和为什么分配内存。
让我先解释一下,我已经用这些计数器计数器在其他版本的Windows服务器操作系统上执行了这个确切的跟踪。 我认为自己非常精通Perf Mon。 我已经validation了其他pipe理单元正在运行(例如计算机pipe理),远程registry服务正在运行,没有启用防火墙,并且可以通过WMI连接(单独通过PowerShell WMI命令validation)。 而我正在运行MMC作为我的域pipe理员帐户,而不是我的标准用户帐户。 尝试从Server 2008 R2 SP1testing服务器执行步骤时也会出现相同的问题。
我运行一个MMC并添加Perf星期一。 同样的事情发生,如果我只是直接运行perfom.exe 。 在这一点上,如果我试图改变到另一台电脑,我收到以下错误

然后我取消该操作并重试。 添加性能监视器pipe理单元,然后单击+添加计数器。 我将系统更改为该级别的远程服务器,如图所示

而事情似乎确定。 尝试访问每个组中的计数器时有延迟。 如果我打开“物理磁盘”,它将显示3:C,D,E,它们正是服务器上命名的物理磁盘。 在我的本地系统上是C和G.
我添加物理磁盘的所有实例:磁盘读取/秒单击“确定”,我在监视器canvas中看到什么? C和G作为与我的本地系统主机名填充的“计算机”列一起添加的磁盘。
一个同事build议: http : //blogs.technet.com/b/abizerh/archive/2009/07/15/error-the-parameter-is-incorrect-when-connecting-to-a-server-using-wmi .aspx但是,这似乎是一些其他的操作系统版本,作者虽然没有说明。
这里发生了什么,我无法在远程服务器上运行性能监视器跟踪? 谢谢你的任何build议。
我发现这篇文章详细介绍了重buildPerfMon设置的一些步骤。
http://support.microsoft.com/kb/300956
然后我在提升的命令提示符下运行以下命令:
cd /d %systemroot%\system32 lodctr /r cd /d %systemroot%\syswow64 lodctr /r
然后我运行MMC并添加PerfMon。 最初我收到了同样的错误,该参数是不正确的。 然后我试图添加计数器和MMC似乎“口吃”我终于可以添加远程计数器。 然后,我删除了远程计数器,并试图连接到远程服务器,看到这一点

而不是错误信息。 它连接正确,目前正在从远程系统收集我的计数器。
执行此跟踪的原因是,SQL Server似乎抓住了大量的内存,然后不释放回来。
SQL服务器可以根据configuration和需要以不同的方式分配内存。
您可以通过检查各种“SQL Server:缓冲区pipe理器”和“SQL Server:内存”性能计数器来监视这一点,但是我可以从经验告诉你,大部分内存用于缓冲区caching,即caching来自磁盘。
MSSQL用于运行其进程,执行查询和存储编译的执行计划的内存至多是其可以使用的总内存量的5%到10%。 其余的都是caching(caching很好)。
如果您想知道MSSQL可用的内存量是否足够,您只需要监视一个性能计数器:“SQL Server:缓冲区pipe理器\页面预期寿命”。
这个值不应该低于几分钟,最好在一个小时或更长的时间内。
如果您还没有触及安装默认设置,它将使用尽可能多的内存,直到操作系统可用的最大值。
如果这是不希望的,请降低“ 服务器属性”窗口的“内存”选项卡中的“最大服务器内存”值。
按OK键将运行sp_reconfigure,这是SQL服务器从此将使用的最多内存。
另一个需要考虑的事情是点击属性(顶部的图标) – >常规选项卡 – >更改“运行方式”到在远程机器有权限的Windows帐户