四个数据库服务器都相同,一个比其他的慢得多

Mat*_*tin 6 performance sql-server sql-server-2008-r2

设置

我们有一个应用程序加载了大量的交易数据供以后查询。它在 Windows Server 2008 64 位上的 4 个 SQL Server 2008R2 企业版上分片。所有服务器的配置完全相同(或者我被告知)。72GB 内存,2x6 核心 CPU,每个都连接到自己的 SAN。数据库目前的大小约为 2TB。

它们每天都加载大约相同数量的事务(+/- 10%),主要是插入。几乎没有更新。该进程受 I/O 限制,CPU 的使用率为 10-15%。

问题

其中一台服务器比所有其他服务器慢得多。它仅以其他三个的四分之一的速度插入事务。一直都是这样。它最终会在较安静的时间赶上,但其他服务器始终跟上流量。

SAN 人员告诉我们,所有四个 SAN 都在执行相同的操作,没有错误。查看活动监视器上的 I/O 图,所有服务器上的 I/O 大致相同。

我已经提取了数据库的模式并进行了比较,没有区别。SQL Server 配置似乎也没有任何区别。它们都使用相同分布的大致相同数量的内存。

问题

我还应该看什么?

我们已经研究了几个月,但什么也想不出来。必须有一些解释。我查看了许多不同的性能指标,除了整体插入速度较慢之外,我似乎找不到任何明显的差异。

Mar*_*ith 7

我倾向于指责性能不佳的服务器的存储。

听起来您处于不幸的境地,让存储管理员告诉您一切正常,而很可能不是。唯一确定的方法就是证明它。

如果您有足够的维护时段,请对每台服务器运行一批 SQLIO 测试并比较结果。@BrentOzar 有一篇关于 SQLIO很好的介绍文章,其中还涵盖了一些替代工具,例如 Crystal Diskmark,这可能足以证明您的情况。与存储管理员合作运行测试,以便他们可以亲眼目睹问题。也许事先用如何证明这是一个 SAN 问题来武装自己。

如果 IO 测试证明无效或不可能,则将 sp_whoisactive 或类似的监控解决方案用于解决问题。Kendra Little从表中的 sp_WhoIsActive 收集数据将是长时间运行 ETL 过程的最佳方法。

在执行上述任何操作之前,请花 1 分钟检查一些非常非常基本的内容,这些内容一次又一次地出现……每个阵列上的NTFS 分配单元大小


dat*_*god 1

我建议您查看慢速服务器上的纯 I/O 速度。获取一个大文件(例如 1GB)并测量复制到慢速服务器/从慢速服务器复制所需的时间。与其他服务器进行比较。尝试在同一逻辑驱动器上、跨不同驱动器等的不同目录之间进行复制。

我怀疑问题要么是您的网络连接有问题,要么是 SAN 上分配慢速服务器的特定区域有问题。