我们在生产环境中有多个数据库服务器,其中 4 个具有非常相似的硬件配置。Dell PowerEdge R620,唯一的区别是 2 个最新的(3 个月前购买和配置)具有 RAID 控制器 v710、256GB RAM 和 CPU 是 2 个物理 Xeon E5-2680 2.80GHz。旧的(大约 1 年前购买和配置)具有 RAID 控制器 v700、128GB RAM 并在 2 个物理至强 E5-2690 2.90GHz 上运行。BIOS 已更新,所有驱动程序已更新至最新版本,等等。所有运行的 SQL Server 2008R2 Enterprise (SP1) 已更新至最新的 CU 和 Windows 2012R2 Standard。两者都在 200 GB SSD x5 RAID10 上运行。它们每个上只运行一个数据库,使用调用 SSIS 包的作业进行同步。我们的系统管理员已经进行了大量的性能和压力测试,以确保我们没有任何硬件或网络遗漏配置或故障。正如预期的那样,最新的表现出更好的性能结果。到目前为止,一切都很好。
我们遇到的问题可以在 Kibana 的屏幕截图中看到。黄色和橙色是 2 个较新的服务器(表上为 6,7),位于所有其他服务器之下。完全可以看出那两个新服务器的响应时间较慢。不仅如此,那两台服务器的负载也比两台较旧的服务器少一点(浅蓝线和深蓝线 - 表上的 4,5)。
有几个监控脚本收集有关性能计数器的信息。使用 DMV 和第三方监控工具进行了尽可能多的挖掘,我手头有很多信息。但是应该有(ofc)我在这里遗漏的东西,因为我找不到这个较慢的响应时间的答案。
2 台最新的服务器使用的 RAM 较少,但我想这是预料之中的,与其他较旧的服务器相比,因为它们的负载较低。
| Server Name| Mem_MB | Mem_GB | Server_RAM_GB | SQL_max_mem_GB| SQL_min_mem_GB |
|------------|--------|--------------|---------------|---------------|----------------|
| 4 | 41108 | 40.145263671 | 128 | 120 | 16 |
| 5 | 61272 | 59.836425781 | 128 | 120 | 16 |
| 6 | 34117 | 33.317626953 | 256 | 250 | 16 |
| 7 | 33764 | 32.972656250 | 256 | 250 | 16 |
所有服务器的更多RAM配置如下:
| Server Name | Total_Page_File_In_MB | Available_Page_File_MB | Kernel_Paged_Pool_MB | Kernel_Nonpaged_Pool_MB |
|-------------|-----------------------|------------------------|----------------------|-------------------------|
| 4 | 180160 | 130042 | 249 | 98 |
| 5 | 148416 | 77246 | 249 | 110 |
| 6 | 301010 | 260453 | 132 | 99 |
| 7 | 301010 | 260454 | 143 | 108 |
在所有服务器上运行以下查询显示相同的配置参数:
SELECT * FROM master.sys.configurations
我可以继续展示更多信息,但我不完全确定需要什么。关于我应该检查什么的任何线索?
我已经阅读了一份来自 MS Troubleshooting Performance Problems in SQL Server 2008的知识白皮书,并从那里获得了很多 DMV 的查询。
根据要求编辑:
EXEC sp_configure 'max server memory (MB)'
| Server Name | name | minimum | maximum | config_value | run_value |
|-------------|------------------------|---------|------------|--------------|-----------|
| 4 | max server memory (MB) | 16 | 2147483647 | 120000 | 120000 |
| 5 | max server memory (MB) | 16 | 2147483647 | 120000 | 120000 |
| 6 | max server memory (MB) | 16 | 2147483647 | 250000 | 250000 |
| 7 | max server memory (MB) | 16 | 2147483647 | 250000 | 250000 |
至于maxdop
我们一直在玩,结果是:
EXEC sp_configure 'max degree of parallelism'
| Server Name | name | minimum | maximum | config_value | run_value |
|:-----------:|:-------------------------:|:-------:|:-------:|:------------:|:---------:|
| 4 | max degree of parallelism | 0 | 1024 | 1 | 1 |
| 5 | max degree of parallelism | 0 | 1024 | 1 | 1 |
| 6 | max degree of parallelism | 0 | 1024 | 1 | 1 |
| 7 | max degree of parallelism | 0 | 1024 | 1 | 1 |
这张图片说明了一切。
感谢 Kin 指出您的问题和相关答案。我在这个过程中学到了很多东西。通过查看您的详细问题,我想做同样的事情,比较我们最重的查询的执行计划......瞧!问题是一项本应执行的工作已经在几周内被禁用了。现在我必须检查它被禁用的原因以及确切的禁用时间。现在一切都很顺利。蓝线是一台服务器由于维护而没有收到请求,没有死。