相关疑难解决方法(0)

SQL Server 遇到 I/O 请求耗时超过 15 秒的情况

在生产 SQL Server 上,我们有以下配置:

3 台 Dell PowerEdge R630 服务器,合并到可用性组中
所有 3 台都连接到作为 RAID 阵列的单个戴尔 SAN 存储单元

有时,在 PRIMARY 上,我们会看到类似于以下内容的消息:

SQL Server 在数据库 ID 8 中
的文件 [F:\Data\MyDatabase.mdf] 上遇到了 11 次 I/O 请求需要超过 15 秒才能完成。操作系统文件句柄为 0x0000000000001FBC。
最近一次 long I/O 的偏移量为:0x000004295d0000。
长 I/O 的持续时间为:37397 毫秒。

我们是性能故障排除的新手

解决此与存储相关的特定问题的最常见方法或最佳实践是什么?

必须使用哪些性能计数器、工具、监视器、应用程序等来缩小此类消息的根本原因?

可能有一个扩展事件可以提供帮助,或者某种审计/日志记录?

更新:添加了我自己的答案(见下文),解释了我们为解决问题所做的工作

performance storage sql-server-2017 performance-tuning

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

SSD 上的 SQL Server tempdb 显示 IO

我们最近将我们的 tempdb 文件分离到一个新的 SSD 并开始看到:

在文件 [T:\tempdb\tempdb4.ndf] 上发生了 5348 次 I/O 请求需要超过 15 秒才能完成。

我们多次出现此错误。当 tempdb 回到其原始 RAID 5 主目录时,我们没有看到错误。我遵循了 SQLIO 教程,我认为 SSD 在进行 8kb 随机读/写时应该比以前的 RAID 5 磁盘快得多。那么为什么我们会看到这些错误呢?

此外,为了证明并非一切都很好,我们通宵运行的批处理文件(发生这些错误的时间)需要 7 个小时。在旧磁盘上花费了 6.25 小时。

磁盘位于直接连接的阵列中。用于数据的 RAID5、用于日志的 RAID 10 和我们用于 SSD 的备用插槽。RAID 5 和 SSD 被格式化为 64kb 块大小。日志被错误地设置为 4KB 块大小(我知道 - 有机会时会修复)。

这些是 SQLIO 的结果:

T盘(ssd)
Ios=8KB随机写入,IOs/sec=31847.48,MBs/sec=248.8
Ios=8KB随机读取,IOs/sec=76391.66,MBs/sec=596.8

S盘(RAID 5)
Ios= 8KB随机写入,IOs/sec=2601.3,MBs/sec=20.32
Ios= 8KB随机读取,IOs/sec=3138.45,MBs/sec=24.51

对于 64K 顺序读/写,它们大致相同。

Tempdb 被拆分为 4 个 1.5Gb 文件(移动前后相同)。

SQL Server 2012 已修补到 SP3。

您知道是什么原因导致 SQL Server …

sql-server sql-server-2012 tempdb

8
推荐指数
1
解决办法
915
查看次数