AWS 上的 2008 R2 SQL Server,CPU 每三小时就会出现一次峰值

AWS 上的 2008 R2 SQL Server,CPU 每三小时就会出现一次峰值

我在 Amazon EC2 中有一个 Windows Server 2008 R2 虚拟机,运行 SQL Server 2008 R2。每隔三个小时,服务器的 CPU 使用率就会像时钟一样飙升至 100%,持续约 10 分钟左右,以至于尝试连接到此 SQL 实例的应用程序会在登录前握手时收到超时错误。重新启动服务器时,发生这种情况的确切时间会发生变化,但总是每三个小时一次,所以我怀疑这是由计划在启动时运行然后每三个小时重复一次的某些操作引起的。

我一直在使用资源监视器来尝试找出问题所在,并且我发现这些时间的 CPU 使用率通常在 sqlservr.exe 和 svchost.exe (netsvcs) 进程之间相对均匀地分配(主要在 40 和 50 之间波动)。然后,资源监视器中的服务细分通常会显示总服务使用率,波动稍大,但始终很高(80 和 90),在 MSSQLSERVER 和另一个服务之间分配。但是,另一个服务似乎每次都不一样,因此很难确定问题所在。在这些期间,我看到与 MSSQLSERVER 一起运行的服务包括:

  • BFE——基础过滤引擎
  • Xensvc - Citrix 虚拟机工具服务
  • RpcEptMapper——RPC 端点映射器
  • DHCP - DHCP 客户端
  • 后台打印程序 - 打印后台处理程序
  • PC 监视器 - Pulseway
  • wuauserv - Windows 更新
  • TermService - 远程桌面服务
  • Ec2Config - Ec2Config
  • DcomLaunch——DCOM 服务器进程启动器
  • 我们的一些内部服务

由于服务列表如此多样化,除了 SQL Server 之外,我真的不知道从哪里开始,因此我尝试使用一些带有系统视图的查询来查找这些时间段内的高 CPU 查询,但那些当前正在运行的查询将阻塞,直到峰值结束之后,而历史数据似乎没有显示任何重要信息。 我也尝试在 Profiler 中运行跟踪,但在这些时间段内唯一具有显著持续时间或 CPU 使用率的查询是全天每 4 分钟运行一次的进程的一部分。 虽然这个过程确实经常会导致 CPU 峰值,但在这些时间段之外,它只会持续几秒钟,通常为 5 秒或更短,并且它不会处理任何更多数据或在这段时间做任何更密集的事情,所以我怀疑这是问题的根源。

在这些时间段内,我在 Windows 事件日志中看到的唯一值得注意或具有一致性的事件是尝试访问 SQL 实例时发生的超时错误。SQL Server 的错误日志也没有显示这些时间段内任何值得注意或一致的内容。没有代理作业或 Windows 计划任务按照与问题一致的时间表运行。

有其他人遇到过类似的问题吗?我还能检查或做什么来解决这个问题?提前谢谢您!

相关内容