我们有一台配备 2 个四核至强 5550 处理器的服务器。服务器上安装的唯一应用程序是 SQL 服务器。CPU 使用率很少超过 40%,交易率为每秒 2,000 笔交易。
处理器队列长度也约为 2。一切似乎都正常,除了上下文切换(工作时间内平均为 88,000 次,最大为 232,000 次)。
我在 SQL Server 文档中看到,上下文切换次数大于 15,000 表示 CPU 存在问题。即使 CPU 计数器看起来正常,这实际上是个问题吗?
答案1
答案2
我确信你们已经知道了这一点,但我想在这里分享答案,因为这是服务器故障。
SQL Server 有自己的计时器功能,默认情况下使用该计时器功能,而不是 OS/BIOS 计时器。您可以禁用此功能,但我不知道这是否会影响您让 SQL Server 在时间字段中输入精细时间数据(精确到 12 毫秒,如果我没记错的话)的能力。
通过进入 SQL Server 配置管理器、进入 SQL Server 服务并右键单击 SQL Server 实例并转到属性来禁用 SQL Server 计时器。
在实例属性中,转到“启动参数”选项卡并添加 -t8038。这将启用一个跟踪标志,该标志会禁用该实例的计时器。如果您有多个实例,则必须对每个实例执行此操作,否则您仍会遇到高上下文切换。