首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server Service Broker:如何确定开销或最大性能?

SQL Server Service Broker:如何确定开销或最大性能?
EN

Stack Overflow用户
提问于 2011-01-07 04:15:57
回答 1查看 4.1K关注 0票数 2

我们正在尝试确定是否适当地使用了Service Broker,并从中获得了最大的性能。我们一直在调整我们的SB对话和处理,并且已经从3000/分钟提高到8000/分钟,但CPU保持在100%不变。此外,在某些日子,SB队列保持为空,但在类似流量的日子,队列可以备份500k。

该计算机是四核(16核),没有HT,32 to和26 to分配给SQL Server,并启用了AWE。

SQL Server2008 SP1 (无CU),企业版。Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) Mar 29 2009 10:11:52版权所有(c) 1988-2008 Windows NT 6.1 (Build 7600:)上的Microsoft Corporation Enterprise Edition (64位)

消息被插入到service broker队列中,该队列提取消息组并通过CLR运行它们,CLR解析XML (可惜不是简单的解析)并将其插入到表中。CLR比我们的T-SQL代码快得多。

我们平均每个调度器有35个可运行的任务

我们每晚运行统计/索引维护。

我们已经设置了服务器MAXDOP =1来尝试并提高性能。

我们已经将临时数据库文件的数量增加到64个,以避免SGAM争用,这与TF1118结合在一起似乎已经停止了tempdb争用。

看看sys.dm_os_waiting_tasks,我们通常有大约60个任务在THREADPOOL上等待,只有少数任务在其他类型上。

我们的信号等待时间为70% (资源等待时间= 30%)。

我们已经确认TokenAndUserPermCache保持在20mb以下。

查看sys.dm_os_latch_stats,我们在1分钟内看到40-200k的缓冲区锁存,这些锁存主要在sysdesend和我们用来处理对话的用户表上。

我们还看到高SOS_SCHEDULER_WAIT,这也表明CPU的压力。但这是因为CLR异常繁忙,还是因为Service Broker开销?我很乐意提供代码-让我知道我需要在这里发布什么。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-07 05:09:06

  1. 您是否仅使用单点登录作为本地排队/处理机制,或者是否涉及任何远程消息传递(x-machine传输)?
  2. 涉及多少个队列?
  3. 涉及激活,我假设是,您可以将多少max_queue_readers?
  4. Anything与500k峰值相关联?它们需要多长时间才能排干??

一些在黑暗中拍摄的照片:

如果你看到sysdesend/sysderecv周围的缓冲区锁存争用,你可以尝试这样做:Service Broker Whitepaper on MSDN: the 150 trick.

  • Make
  • is up up to the task,参见Dealing with Large Queues

Skipped Ghost Records/sec是否超乎常人?

~60个任务在16个CPU的机器上等待工作人员...我通常会认为还可以,但对于一台专门用于SSB处理的机器来说,这有点奇怪,因为这样的机器往往只有很少的长时间运行的任务(激活的作业),而不是许多短时间运行的任务,所以它们不会显示THREADPOOL等待。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4619396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档