如果IIS配置了多个工作进程,则SignalR会丢失消息 [英] SignalR lost messages if IIS configure with more than 1 worker process
本文介绍了如果IIS配置了多个工作进程,则SignalR会丢失消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
推荐答案
这是设计好的。这两个工作进程不共享状态,客户端将以循环方式分布在它们之间,这意味着50%将连接到进程A,50%将连接到进程B。由于底层SignalR消息总线默认在内存中,因此进程A看不到来自进程B的消息。
您正在配置的内容称为"Web花园"(不要与"Web场"混淆),通常用于提高故障应用程序的响应速度(请参阅this SO question)。因为SignalR是从头开始构建的,所以考虑到可伸缩性,这种配置不会给您带来任何好处。我的建议是将工作进程限制保持在%1。
但是,有一种方法可以使其与Web花园一起工作:您需要使用像Redis或Windows Azure Service Bus这样的外部消息总线(详细信息可以在docs中找到)来在进程之间共享消息,这当然会引入额外的网络延迟。
这篇关于如果IIS配置了多个工作进程,则SignalR会丢失消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文