我使用服务代理来扩展存储过程。 它可以同时平稳运行10,100,500次点击。
但是我面临一个小问题。以下是详细信息。
我们正在扩展的存储过程恰好执行10秒。
当我以10个队列运行10时,平均执行时间为10秒。意味着所有人都在同一时间执行。
但是当我以100个队列跑100次时。我无法看到类似的结果。是的,我不希望所有这些都同时运行。但至少第一次执行应该已经完成10秒,而其他执行应该在他们拥有资源时执行。 这里的结果是100次执行需要4分钟,第一次完成发生在2分钟后(字面意思)。其余的在另外2分钟完成。
我的cpu核心是6和激活(Max_Queue_Readers)我试过6,12,48并且都给出了相同的结果。
还有一件事需要提一下,如果我运行这个东西等待10秒而没有实际的sp执行它会像40秒内的1000个请求那样快速运行。
我想从上面提到的要点知道服务经纪人最初是在等待一件事来完成第一次执行?意味着为什么花2分钟完成第一个任何想法?
使用临时日志表跟踪所有这些数字,我们记录时间。
答案 0 :(得分:1)
从0升到Max_Queue_Readers
。 Service Broker不会立即激活6个队列读取器,它将激活一个,然后在5秒内激活另一个,然后在5秒内激活另一个,依此类推。我们的想法是让Service Broker根据需要启动尽可能多的激活过程以跟上工作负载,但不是更多。尖峰变平了。