мы написали прототип для тестирования производительности SignalR, чтобы проверить, можем ли мы использовать его для нашего программного обеспечения. В этом прототипе мы протестировали оба варианта: пересылку данных клиентам через PersistentConnection и через HubConnection.
Наш стресс-тест состоит из трех компонентов:
- 1 «клиент», который регистрируется на хабе и подписывается на сообщения
- 1 концентратор, отвечающий за получение и пересылку сообщений (самообслуживаемый)
- 1 «драйвер», который включает 5 потоков, каждый из которых отправляет 1000 сообщений через концентратор клиентам.
PersistentConnection работает довольно стабильно, но в HubConnection мы заметили много потоков в концентраторе и большие задержки (от 1 до 10 секунд) между каждыми несколькими сотнями пакетов. Задержки в основном происходят внутри хаба (а также между хабом и клиентом). Также у нас небольшие задержки в доставке от "водителя" до хаба. Под задержкой я подразумеваю, что вызов метода возврата концентратора задерживается (в драйвере) или что вызов метода приема клиента вызывается намного позже. Время от времени у нас также теряются некоторые сообщения (не доставляются клиенту).
Есть идеи, откуда это могло взяться? Это известная ошибка? Есть ли какой-нибудь вариант, который мы можем настроить? У меня есть полное решение в качестве рабочего примера, которое я могу предоставить по запросу.
Спасибо Алекс