2014-11-06 36 views
1

我已经使用服务代理来扩展存储过程。 它可以同时平稳运行10,100,500次。服务代理最初需要时间

但是我面临一个小问题。以下是详细信息。

我们正在扩展的存储过程恰好执行10秒。

当我运行10个队列时,平均执行时间为10秒。手段都在同一时间执行。

但是当我跑100次100个队列。我无法看到类似的结果。是的,我不希望所有的人都在同一时间运行。但至少第一次执行应该已经完成​​了10秒,其他人应该在有资源时执行。 这里的发现是100处决需要4分钟,第一次完成发生在2分钟(字面上)之后。其余2分钟完成。

我的CPU核心是6和激活(Max_Queue_Readers)我试过6,12,48,并且都给出了相同的结果。

还有一件事情要提到,如果我用等待10秒的时间来运行这个东西,但实际的sp执行速度非常快,就像40秒内的1000个请求一样。

我想从上面说的几点知道,服务经纪人最初是在等待一件事情来完成第一次执行?意味着为什么需要2分钟才能完成第一个想法?

所有这些数字都通过使用临时日志表进行跟踪,我们在这里记录时间。

+0

服务经纪人并不神奇。如果存储过程的各种调用之间存在争用,那么服务代理将不会使其消失。我的建议是解决这个问题,就像其他存储过程的性能问题一样:看看proc正在等待什么,看看你是否可以清除它。 – 2014-11-06 18:52:52

+0

另外,为什么它们需要多长时间?服务代理是一种异步技术。这意味着“火和忘记”。您的邮件将被最终处理。 – 2014-11-06 18:53:52

回答

1

这是一个从0到Max_Queue_Readers的斜坡。 Service Broker不会立即激活6个队列阅读器,它会激活一个,然后在5秒钟内激活另一个,然后在5秒内再次激活一个,依此类推。这个想法是Service Broker根据需要启动尽可能多的激活过程以跟上工作量,但不是更多。尖刺被压平。

阅读更多在Understanding Queue Monitors

相关问题