MSSQLSERVER_19419

适用于:SQL Server

详细信息

属性
产品名称 SQL Server
事件 ID 19419
事件来源 MSSQLSERVER
组件 SQLEngine
符号名称 HADR_AG_LEASE_EXPIRED_WAITING_FOR_RENEW
消息正文 Windows Server 故障转移群集在租约超时期内未收到来自托管可用性组 '%.*ls' 的进程事件信号。

说明

当 SQL Server 端的租约辅助角色未及时安排处理群集的事件信号时,SQL Server 错误日志中会引发错误 19419。 具体而言,SQL Server 调用 WaitForMultipleObjects() 等待以信号状态设置租约超时事件。 如果函数返回WAIT_OBJECT_0,指示成功,但此时租约已过期,则会引发错误 19419。

租约是一种基于时间的通信机制,它出现在 SQL Server 与 Windows Server 故障转移群集 (WSFC) 进程(尤其是 RHS.EXE 进程)之间。 这两个进程会定期相互通信,以确保另一进程正在运行且在响应。 此通信使用 Windows 事件对象 进行,并确保在不知道 WSFC 的情况下不会发生 AG 资源的故障转移。 如果其中一个进程未根据预定义的租约期响应租约通信,则会发生租约超时。 有关详细信息,请参阅 租用机制。 另请参阅 工作原理:SQL Server AlwaysOn 租约超时

此错误与其他租约超时错误相关,并提供有关错误 MSSQLSERVER_19407

原因

由于 Windows 事件是轻型同步对象,因此影响它们的外部因素相对较少。 可能导致租约超时的典型问题涉及系统范围问题。 下面是可能导致租约过期并导致重启或故障转移的可能性列表:

  • 系统上 CPU 使用率高(接近 100%)
  • 内存不足条件 - 正在分页的虚拟内存和/或其中一个进程
  • 生成大型内存转储时 SQL Server 进程未响应
  • WSFC 脱机(例如仲裁丢失)

错误 19419 最常见的原因是 CPU 过高,这会导致安排租用工作线程的延迟。

用户操作

检查服务器上的 CPU 使用率,因为 SQL Server 租约辅助角色似乎对 CPU 资源不足。 以下 PowerShell 脚本可让你快速诊断系统上的 CPU 使用率。

 Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 5 -MaxSamples 30 |
   Select-Object -ExpandProperty CounterSamples | Select-Object TimeStamp, Path, CookedValue

有关详细故障排除,请参阅MSSQLSERVER_19407中的 用户操作

  • 排查高 CPU 问题
  • 排查内存不足问题
  • 减少或避免 SQL Server 或群集进程的大型内存转储
  • 检查虚拟机(VM)配置是否过度预配
  • 检查虚拟机(VM)迁移或备份是否导致问题