Bra*_*adC 4 performance sql-server-2008 sql-server ssas
我们在 Windows 2003 上有一个 SQL 2008 Analysis Services 实例,它在高峰活动期间几乎每天都遇到性能问题(查询超时)。从同一应用程序查询的第二个相同实例(使用循环 IP 进行负载平衡)没有相同的问题。我们甚至切换了两个实例,问题似乎“停留”在物理服务器上。我们知道这不是 SSAS 配置问题。立方体每天重建一次。
以下是我们能够确定的:当Memory\System Cache Resident Bytes perfmon 计数器意外下降时发生超时(我们称之为“缓存刷新”)。例如,今天早上它在大约 2 分钟内从大约 14GB 下降到 8.4GB。发生这种情况时,Memory:Page Reads/sec从 0 跳到 800-1200,事情开始横盘整理。
您可以看到对 MSOLAP 计数器的直接影响:存储引擎查询\数据读取/秒从 50,000 危险地下降到 5,000(这些显然不是物理读取,它们是从系统缓存中读取;这可以通过类似的下降得到证实)进程(msmdsrv)\IO 读取操作/秒)。存储引擎查询\平均时间/查询从 500-2000 攀升至 20,000-50,000,并且查询开始超时。线程\处理池忙线程从 ~50 跳到最大配置值 240,并且线程\处理池作业队列长度开始攀升。
在接下来的 30 分钟左右,查询会继续超时,直到(我认为)文件缓存被丢失的数据重新填充。Memory\Page Reads/sec回落到接近零,事情似乎恢复到“正常”。
在整个过程中,Process(msmdsrv):Working Set (~10.5GB) 、Process(Total):Working Set (~13.9GB) 或MSOLAP:Memory\Memory Usage KB (~50GB)没有显着变化。这是一台具有 128GB RAM 的 48 核服务器,仅运行 SSAS(另一台没有问题的服务器是 24 核机器,我们还没有发现它们之间有任何其他显着差异)。
实例内存设置如下:
<TotalMemoryLimit>80000000000</TotalMemoryLimit>
<LowMemoryLimit>70000000000</LowMemoryLimit>
<PreAllocate>40000000000</PreAllocate>
Run Code Online (Sandbox Code Playgroud)
特别是基于Memory Usage KB,我不认为内存是一个问题,除了弄清楚为什么 SSAS 不使用其内部内存来缓存整个多维数据集(多维数据集大约 32GB)。
我们目前正在努力优化多维数据集和查询设计(我非常怀疑这会使问题完全消失)。
与此同时,我们需要
以下是我的问题:
我认为这是 SSAS 的“正常”行为?有没有办法强制整个 32GB 立方体进入 SSAS 内存,以完全消除从 windows 文件缓存中读取的需要?
有什么方法可以确定究竟是什么导致了此缓存刷新,以及为什么它不会发生在(非常相似的)其他主机上?
还有其他方法可以缓解这个问题吗??
我发现了一些其他对 SSAS 和 Windows 文件缓存的引用(例如,此处找到的链接),但这些似乎暗示文件缓存是一件坏事,并讨论了一个故意刷新缓存的实用程序,这似乎是与我需要的相反。
编辑:添加了 100pt 赏金
我相信您看到了需要连续内存的 Windows 2003 问题的症状,这会导致包括分析服务在内的正在运行的进程削减其工作集内存。由于分配了大量内存,此修剪过程可能需要大量时间才能完成,而在此过程中,新分配将被阻止,从而导致进程停止。此问题已在 Windows 2008 及更高版本中修复,此支持文章适用于 SQL Server,但包含指向相关页面的所有链接http://support.microsoft.com/kb/918483,特别是此引用
在 Windows Server 2008 中,物理连续内存的分配大大增强。分配连续内存的请求更有可能成功,因为内存管理器现在会动态替换页面,通常不会修剪工作集或执行 I/O 操作。此外,还有更多类型的页面(例如内核堆栈和文件系统元数据页面等)现在可以替代。因此,通常在任何给定时间都有更多的连续内存可用。此外,获得此类分配的成本也大大降低。
我相信对于这个问题,您要么必须升级到 Windows 2008,要么测试将内存中的锁定页面授予 Analysis Services 帐户。我在 Windows 2003 上也遇到了内存分配问题,需要重新启动才能清除。
此 SQLCAT博客比较了 Windows Server 2003 和 2008 之间的变化。
这篇博文提到了 LPIM with Analysis Services 的一些问题(接近尾声)
还有这篇关于工作集修整导致性能问题的知识库文章,这篇文章展示了如何识别分配连续内存的驱动程序