作为 SQL 2017 Always on 可用性组 (BAG) 一部分的服务器,我注意到这些消息有所增加。我知道这些是自 2012 年以来作为标准出现在日志中的消息(2012 年之前的跟踪标志),但在过去 2 天它们每隔几分钟出现一次,此时没有运行备份或维护作业
服务器充当辅助不可读故障转移伙伴,而主服务器没有表现出相同的行为。
09/04/2020 10:52:24,spid82s,Unknown,FlushCache: 为 db 7:0 09/04/2020 10:52:07 在 81090 毫秒内清理了 2303 个 bufs 和 1881 次写入(避免了 11 个新的脏 bufs), spid52s,未知,最后一个未完成的目标:2 avgWriteLatency 86 09/04/2020 10:52:07,spid52s,未知,每秒平均写入:17.70 写入/秒平均吞吐量:0.19 MB/秒 I/O 饱和度:13073 上下文切换15434
系统错误日志中还有一个关于磁盘问题的警告,在此之后几秒钟,可用性组故障转移,因为 FlushCache 消息增加了。
有没有人经历过类似的事情或有任何建议,我的系统管理员也在关注 SAN 和 VMware 资产。
突然想到这些可能是由自动增长活动引起的吗?
切换到间接检查点(通常,将恢复间隔时间设置为 60 秒,至少对于用户数据库)。
我在此处和此处写过有关此问题的文章,您应该在进行更改之前完整阅读这些帖子,尽管恕我直言,这几乎是不费吹灰之力。
对我们环境的影响是巨大而直接的,很容易证明这种变化是负责任的。每个有症状的数据库都从 30-60 秒的检查点和充满这些消息的错误日志变为亚秒级的检查点,并且没有更多的错误日志条目。
也可能有针对您的工作负载的缓解技术,例如,请参阅Itzik Ben-Gan 的这篇文章,但使检查点更有效是一条更快、更容易的途径。不过,您的存储和虚拟机人员并没有摆脱困境。他们肯定需要解决磁盘问题(但我不同意这些 FlushCache 消息是任何故障转移的根本原因;更有可能它们只是不同的受害者/症状)。
如果最近有任何固件更新或您的存储子系统需要更新的固件更新,请咨询您的存储管理员。我在 SQL 环境中多次看到此消息,您可以查看的一件事是存储层配置(这是常见原因)。此外,使用 perfmon 监控磁盘性能的一件事。您需要关注的磁盘计数器:
avg disk sec/Read
,avg disk sec/Write
,avg disk sec/Transfer
.您可以查看以下链接,您可以查看以下内容:
当我说存储层时,请检查以下内容:HBA/CNA、光纤电缆、FC 交换机、端口、存储控制器、软件(MPIO 驱动程序) - 其所有配置
最后,我强烈建议您始终检查和调查事件日志中的警告/错误消息。不要让它过去,因为这种信息会在未来产生长期影响。