SignalR 缓慢启动连接(和检索数据)

SignalR slow initiating connection (and retrieving data)

我开始遇到性能问题,尤其是在升级到版本 2.2.0 之后。

对于使用不同集线器的更复杂页面,启动连接最多可能需要 30 秒:

[16:20:35 GMT+0100 (GMT Daylight Time)] SignalR: serverSentEvents transport connected. Initiating start request.
[16:21:05 GMT+0100 (GMT Daylight Time)] SignalR: The start request succeeded. Transitioning to the connected state.

为了演示这个问题,我创建了一个测试页面,它只使用一个集线器。我在集线器上调用一个服务器方法,只检索一个 int 值,没有进行任何数据库调用或任何复杂的计算。

define(["knockout", "jquery", "signalr"],
    function (ko, $) {
        function SignalRTestViewModel() {
            var self = this;
            var connection = $.connection.dashboardHub;

            self.init = function () {
                connection.server.signalRTest();
            };

            self.test = ko.observable();

            connection.client.populateSignalRTest = function (test) {
                self.test(test);
            };
        }

        return SignalRTestViewModel;
    })

启动连接仍需要 2-3 秒,仅检索一个 int 值还需要 2 秒。

这个问题对于不同的传输方法(serverSentEvents、longPolling)都是一样的,并且存在于所有浏览器中。

我不太确定如何缩小问题范围以及可能导致这些延迟的原因。任何帮助将不胜感激。

经过大量调试后,我发现我的很多服务中正在解决的依赖项之一在每次解决时都会验证 Lucene 搜索索引(这完全没有必要)。

将其注释掉,似乎一切正常。