我试图弄清楚为什么我的SSBS实例的消息排队速度这么慢。
我使用ado.net从C#应用程序连接。它需要5-6秒来排队大约720条消息。
我已经把信息分成了50个信息块,每个信息块都有各自的对话。
我使用"150技巧“来确保每个会话句柄都在其数据页面上,以避免热发现会话行。块使用.net TPL并行执行。
每个块(50条消息)获取自己的SqlConnection,没有事务,启动会话(实际上有150个会话,但只使用一个),依次发送消息(通过foreach循环),然后结束会话。
SSBS服务是在没有验证或加密的情况下定义的。
客户端应用程序(发送消息)和Server实例都位于同一台机器上,并且托管在SSD、32 GB Ram和i7处理器上。在这段时间里,我没有看到任何资源枯竭。
我还应该把什么作为表现不佳的原因呢?
发布于 2017-09-28 21:59:21
孩子,我觉得自己很蠢。
我花了一整天的时间试图找出慢病的原因。原来是Visual的Intellitrace调试器。当我在没有附加调试器的情况下运行我的代码时,我有以下结果:
[17:56:25 DBG] Creating Conversation took 0001 millisecond(s)
[17:56:25 DBG] Sending 718 message(s) to broker service message queue. took 0208 millisecond(s)向所有为猎杀狙击手做出贡献的人道歉和感谢。
发布于 2017-09-28 18:21:15
您提到了"150“技巧,所以您已经阅读了白皮书(供其他人参考,可以找到这里 )。从同一份白皮书中的另一个观察到,设置对话有点昂贵。您是否测量过会话设置所需的时间(vs实际发送消息)?
我在这里实现SB时所做的一件事是,我设置了一个预先启动的会话句柄表,应用程序可以在运行时获取这些句柄。如果你对细节感兴趣,让我知道,我可以把它发到这里。
https://stackoverflow.com/questions/46474828
复制相似问题