如果IIS配置了多个工作进程,则SignalR会丢失消息 [英] SignalR lost messages if IIS configure with more than 1 worker process

查看:11
本文介绍了如果IIS配置了多个工作进程,则SignalR会丢失消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用一个工作进程IIS广播和接收所有消息。 将工作进程增加到2,我只收到每隔一次的消息(丢失50%)。 是设计的、配置的还是错误的?

推荐答案

这是设计好的。这两个工作进程不共享状态,客户端将以循环方式分布在它们之间,这意味着50%将连接到进程A,50%将连接到进程B。由于底层SignalR消息总线默认在内存中,因此进程A看不到来自进程B的消息。

您正在配置的内容称为"Web花园"(不要与"Web场"混淆),通常用于提高故障应用程序的响应速度(请参阅this SO question)。因为SignalR是从头开始构建的,所以考虑到可伸缩性,这种配置不会给您带来任何好处。

我的建议是将工作进程限制保持在%1。

但是,有一种方法可以使其与Web花园一起工作:您需要使用像Redis或Windows Azure Service Bus这样的外部消息总线(详细信息可以在docs中找到)来在进程之间共享消息,这当然会引入额外的网络延迟。

这篇关于如果IIS配置了多个工作进程,则SignalR会丢失消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆