小编Dru*_*key的帖子

每台服务器许多 SQL Server 实例的推荐内存配置

我目前正在管理 SaaS 系统的服务器集群。我们目前有 6 个运行 MSSQL 2008 R2 的 SQL 服务器。每台服务器都是一个四核虚拟机,在服务器机架上提供 16GB 的 RAM。我们使用 SQL Server 允许的最多 50 个实例填充每个服务器。每个实例将被最多 10 个客户端同时偶尔访问,并且每个数据库的大小通常只有 100MB 到 500MB 左右。

目前,每个实例都是在没有设置内存限制的情况下安装的,但我们发现第一个实例往往会使用过多的内存,而后面的实例(按启动顺序)只有 200MB 可用,而服务器操作系统的内存不足1% 的物理内存可用。这似乎会导致过度的磁盘交换和延迟问题。

在这种情况下拆分内存分配的推荐方法是什么?是否有一个公式可以根据客户端数量和数据库大小来确定一个实例至少需要多少内存?我可以为每个实例设置最大 300MB 并完成它吗?

2018-12-13 最终解决方案

我终于想出了如何配置看起来非常稳定并且在所有实例中完全对称的所有内容,并且由于它需要进行一些挖掘和操作,因此我认为我应该分享我的解决方案。这可能并不适合所有人,但对我来说似乎是最好的解决方案。

关键在这个 API:https : //docs.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-setprocessworkingsetsizeex

这允许您在每个进程的基础上设置最小和最大工作集大小的硬限制。这对我来说似乎是最干净的,因为它允许我告诉 SQL Server 在这个工作集大小内使用它想要的尽可能多的内存,并且它似乎自己进行了充分优化,而不是满负荷运行并试图占用更多内存每时每刻。每个实例将交换更多的整体,但由于每个实例的使用是零星的,它似乎工作得很好,如果它成为一个问题,我可以在服务器机架中的 SSD 上提供一些交换分区作为每个服务器的交换空间. 当每个实例启动时,我通过一个 powershell 脚本将每个实例的工作集大小设置为 300MB,最小操作系统总是有 1GB 可用,每个人似乎都很高兴。

sql-server-2008 sql-server sql-server-2008-r2

4
推荐指数
1
解决办法
2万
查看次数