在大约 45 秒钟之后,该日志写操作将完成,但到此时为止,数以百计的连接已经积累起来,从而导致阻塞问题,并使得 SQL Server 和应用程序需要花费几分钟的时间进行恢复。当与应用程序问题结合起来的时候,延迟 I/O 状况会对系统产生非常消极的影响。
解决办法:这归因于 HBA 驱动程序中的延迟 I/O 请求。计算机具有多个带有故障转移支持的 HBA 卡。故障转移超时值被配置为 45 秒。当一个 HBA 落后或者在 45 秒钟或更长时间内未与 SAN 通信时,该 I/O 请求被路由到第二个 HBA 进行处理,并且会很快完成。硬件产品的推荐故障转移设置为 5 秒钟,以便避免出现这样的延迟状况。
如果在 SQL Server 2000 SP4 中已经有了新的自动报告该状况的功能,那么我们在疑难解答过程中就可以很快知道,基本问题是由于 SQL Server 外部的问题而发生的阻塞或延迟 I/O 操作。事实上,我们花费了大量时间来解决一个在最初呈现为普通性能问题的问题。
示例 2 — 筛选器驱动程序干预
许多防病毒软件和备份产品使用 I/O 筛选器驱动程序。这些筛选器驱动程序成为 I/O 请求栈的一部分,并且可以访问 IRP 请求。Microsoft 技术支持部门已经遇见过各种问题 — 从导致阻塞 I/O 的错误到筛选器驱动程序实现中的延迟状况。
其中,Microsoft SQL Server 技术支持部门遇到的一种情况是,涉及到用于备份处理(该过程能够备份在备份时处于打开状态的文件)的筛选器驱动程序。系统管理员错误地在文件备份选择中包括了 SQL Server 数据文件目录。当备份发生时,它试图收集备份开始时文件的一致镜像。在完成该操作时,它将延迟后续的 I/O 请求,使它们能够在软件处理它们时逐个完成。
当备份开始时,SQL Server 的性能会急剧下降,因为针对 SQL Server 的 I/O 被强迫逐个完成。使该问题变得更为复杂的是,单 I/O 逻辑的特点使得 I/O 通常无法异步执行,因此当 SQL Server 期望发送 I/O 请求并继续工作时,UMS 辅助进程却在 I/O 完成之前一直阻塞在读或写调用中。SQL Server 预读功能实际上被筛选器驱动程序的操作禁用了。而且,即使当备份完成时,筛选器驱动程序中的另一个程序错误仍然使单 I/O 行为保持不变。恢复 SQL Server 性能的唯一方法是关闭数据库并重新打开它或者重新启动 SQL Server,以便在当前筛选器驱动程序交互未就绪的情况下释放并重新获取文件句柄。
解决办法:将 SQL Server 的数据文件从文件备份过程中排除,并且解决筛选器驱动程序中的导致文件被置于单 I/O 模式的程序错误。
上一页 [1] [2] [3] [4] [5] [6] 下一页
![]() | 图解MySQL数据库的安装和操作 | 53859 |
![]() | Mysql数据库操作新手入门,手把手的教会你 | 36468 |
![]() | MySQL入门学习(二)入门篇 | 33092 |
![]() | MySQL入门学习(一)安装篇 | 28496 |
![]() | MY SQL常用命令 | 25517 |
![]() | MySQL入门学习(三)学习篇 | 20929 |
![]() | MySQL入门学习(四)学习篇(2) | 12353 |
![]() | MySQL入门学习(六)修改和备份、批处理 | 8935 |