什么会导致SQL Server的最大内存设置出现随时间变化?

我开始分析我们在Excel中的SQL Server PerfMon日志,并发现这一点。

传说:
红色 – SQL Server – 目标服务器内存
绿色 – SQL Server – 总服务器内存
蓝色 – 可用的系统内存

服务器1:

服务器2:

服务器3:

有没有其他人看过这个,我们应该担心吗?

所有服务器的configuration都是相同的,但最大内存设置除外 – 服务器1和2上为14 GB,服务器3上为10 GB。所有服务器上的最小内存为零。 这些是SQL Server 2008 R2实例,每个实例都在Hyper-V下运行Windows Server 2008 R2(SP1中旬)的自己的VM中。

期望的是看到像服务器1(横向红线)的graphics,但是对于服务器2和3,目标服务器内存的值是如何随时间波动的? 从我已经显示的图表中看不到的是,波动在某种程度上与可用内存度量相匹配。 此外,服务器重新启动(蓝色垂直线)似乎也不会影响值。 这是PerfMon中的一个错误吗?

PerfMon的设置使得所有3个服务器都在一个数据采集器集合中,每个服务器都有自己的性能计数器以及我们正在跟踪的所有参数。

任何帮助或见解,将不胜感激。

这听起来像你被目标服务器内存弄糊涂,并假定它是一个静态值。 目标服务器内存是SQL Server计划使用的内存上限(请注意,在文档中术语是“可以使用”而不是“可用”)。这是一个dynamic数字,在内存压力下,它会减less目标服务器内存,然后减less(或增加)总服务器内存,直到它到达目标。从这个图表显示,我会期望有其他东西把内存压力的其他2个SQL服务器

根据您迄今共享的信息,我没有看到任何问题。 你需要问的是所有这些服务器上的活动是否相同? 你如何衡量? 如果你的总数和目标不一样,如果总数<目标,这意味着你有更多的空间。 你也可能想看看其他的指标,如PLE,缓冲区caching命中率等等,而不要只依赖一个指标。

你在这些服务器上看到任何性能问题吗? 你检查过这些箱子的等待情况? 你有没有看过虚拟文件统计等…我的理论是,你应该在一段时间内监控这些指标,看看他们是否趋势上涨或下跌,不要担心一个特定的小时间间隔的数量。

HTH