Проблемы производительности SignalR с HubConnection (много потоков на сервере, длительные задержки между доставкой)

мы написали прототип для тестирования производительности SignalR, чтобы проверить, можем ли мы использовать его для нашего программного обеспечения. В этом прототипе мы протестировали оба варианта: пересылку данных клиентам через PersistentConnection и через HubConnection.

Наш стресс-тест состоит из трех компонентов:

  • 1 «клиент», который регистрируется на хабе и подписывается на сообщения
  • 1 концентратор, отвечающий за получение и пересылку сообщений (самообслуживаемый)
  • 1 «драйвер», который включает 5 потоков, каждый из которых отправляет 1000 сообщений через концентратор клиентам.

PersistentConnection работает довольно стабильно, но в HubConnection мы заметили много потоков в концентраторе и большие задержки (от 1 до 10 секунд) между каждыми несколькими сотнями пакетов. Задержки в основном происходят внутри хаба (а также между хабом и клиентом). Также у нас небольшие задержки в доставке от "водителя" до хаба. Под задержкой я подразумеваю, что вызов метода возврата концентратора задерживается (в драйвере) или что вызов метода приема клиента вызывается намного позже. Время от времени у нас также теряются некоторые сообщения (не доставляются клиенту).

Есть идеи, откуда это могло взяться? Это известная ошибка? Есть ли какой-нибудь вариант, который мы можем настроить? У меня есть полное решение в качестве рабочего примера, которое я могу предоставить по запросу.

Спасибо Алекс


person Alexander Müller    schedule 09.11.2012    source источник


Ответы (1)


Насколько я знаю, SignalR имеет гораздо лучшую производительность.

Посмотрите видео здесь: Создание веб-приложений реального времени с помощью ASP.NET SignalR чтобы лучше понять возможности SignalR и производительности.

Также посетите: производительность вики-страницу.

В SignalR есть инструменты нагрузочного тестирования. Сначала проверьте производительность с помощью этих инструментов, чтобы получить четкое представление о возможностях вашего оборудования.

ИНСТРУМЕНТЫ:

Попробуйте запустить нагрузочный тест с помощью Crank.

Crank — это инструмент нагрузочного тестирования для SignalR.

а также посмотрите на Flywheel.

Простой проект ремня безопасности для измерения производительности SignalR. Использовать вместе с кривошипом

person Matija Grcic    schedule 09.11.2012