AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 340992
Accepted
Martin Karouš
Martin Karouš
Asked: 2024-07-17 05:00:17 +0800 CST2024-07-17 05:00:17 +0800 CST 2024-07-17 05:00:17 +0800 CST

在没有用户流量的情况下,空闲的 SQL Server 实例上的 CPU 利用率很高[重复]

  • 772
这个问题已经有答案了:
查询存储损坏 (1 个答案)
3 小时前关闭。

我们在具有 8 个 vCPU 的 Windows 2022 VM 上安装了 SQL Server 2022 CU13 Enterprise。即使服务器上没有用户生成的负载(这意味着目前没有用户连接,即使 SQL Server 代理已停止以消除所有非系统负载),sqlserver.exe 进程也显示 CPU 利用率高达 10-15% 之间。在空闲时间,主要的等待类型是 SOS_SCHEDULER_YELD。

此服务器活动还会阻止 SQL Server 服务停止。尝试停止服务会导致无休止的等待,并且需要终止 Windows 服务进程以使其“停止”。重新启动后,利用率在一段时间内完全正常(空闲服务器的 CPU 利用率为 */- 0),但在用户负载运行一段时间后(最多几小时或几天),问题再次出现。这意味着利用率高于生成用户负载时的应有水平,并且再次,在负载停止后(没有用户连接),利用率仍然很高,如上所述...

错误日志、XE 健康会话、Windows 事件日志中没有可疑消息……

以下是上述空闲期间服务器上的活动监视器视图: 在此处输入图片描述

经过一番调查,我很可能确定了导致这种利用率的 SPID。它似乎是一个系统 SPID(调查时为 SPID 37),并且在 10 秒内消耗了大约 10 秒的 CPU 时间(参见下面查询 4 ​​的输出)。SPID 的 database_id 似乎在 master(database_id = 1)和其中一个用户数据库(database_id = 10)之间变化。只有数据库 id 1 和 10 似乎参与了此 SPID 活动。SPID 还在 tempdb 中生成不断增加的分配(参见下面查询 3 的输出)。

以下是在拍摄上面的活动监视器图片的同时 sys.dm_exec_request 的输出(有问题的 spid 是 37): 查询 1

以下是 sp_WhoIsActive 同时的输出: 查询 2

以下是 10 秒内 SPID 所消耗的 CPU 时间的计算: 查询 3

据我了解,这似乎是一项 Service Broker 活动。但是,主数据库和用户数据库中均未启用 Service Broker。我们不会主动在数据库中使用 Service Broker。我不知道此代理活动可能是什么,也不知道它可以与哪些系统活动相关联。服务器上或该用户数据库中均未使用任何“不寻常”的功能,只有“基本通用功能集”,唯一的“不寻常功能”是启用了 TDE。

关于如何进一步调查此问题的根本原因(此经纪人活动的目的何在)以及如何摆脱它,您有什么想法吗?

sql-server
  • 1 1 个回答
  • 64 Views

1 个回答

  • Voted
  1. Best Answer
    Martin Karouš
    2024-07-30T21:04:21+08:002024-07-30T21:04:21+08:00

    经过几次尝试,我终于找到了上述行为的根本原因。在“有问题的”数据库中启用了查询存储,并且用户生成的负载主要由即席查询组成。这导致查询存储很快被填满,并触发了“基于大小的清理程序”。这种基于大小的清理似乎是 CPU 利用率的根源。

    无法“和平地”关闭 SQL Server 服务似乎是由于查询存储正在等待将某些数据刷新到磁盘(这可以通过使用 7745 跟踪标志来避免)造成的。

    无论如何,这引发了一个与查询存储行为(损坏的查询存储)相关的新问题

    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve