<p>Память SignalR продолжает увеличиваться</p>

Созданный на 2 авг. 2018  ·  6Комментарии  ·  Источник: SignalR/SignalR

Привет,

Я заметил, что память Signalr в IIS продолжает увеличиваться и никогда не выходит из строя, даже когда пользователи отключены. Почти все пользователи (около 200 пользователей) подключены через веб-сокеты.


Asp.net.SignalR.Client.dll - 2.2.3
Asp.net.SignalR.Core.dll - 2.2.3
Asp.net.SignalR.SystemWeb.dll - 2.2.3

Настройка: один сервер, выделенный пул приложений для Signalr WCF
Операционная система: Windows 2012 R2
Сервер: Ec2 T2XLarge (4 виртуальных ЦП, 16 ГБ памяти)
Доступная свободная память:> 50%


См. Потребление памяти IIS для приложения.

С уважением,
Раджа

20180730-1.xlsx

more-info-needed

Самый полезный комментарий

Можете ли вы использовать профилировщик памяти, чтобы определить, какие объекты остались в живых? SignalR ли намеренно держать сообщения в памяти после того, как клиент отключается для того , чтобы иметь возможность повторно транслировать эти сообщения в случае клиента подключения. Эти сообщения хранятся в кольцевом буфере, поэтому он буферизует только фиксированное количество сообщений, но вполне ожидаемо, что память не будет освобождена, как только клиент будет отключен.

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

Все 6 Комментарий

Есть новости о том, почему это происходит?

такая же проблема здесь

Можете ли вы использовать профилировщик памяти, чтобы определить, какие объекты остались в живых? SignalR ли намеренно держать сообщения в памяти после того, как клиент отключается для того , чтобы иметь возможность повторно транслировать эти сообщения в случае клиента подключения. Эти сообщения хранятся в кольцевом буфере, поэтому он буферизует только фиксированное количество сообщений, но вполне ожидаемо, что память не будет освобождена, как только клиент будет отключен.

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

Скорее всего №3850.

Как описано выше, это выглядит как стандартный буфер сообщений SignalR. SignalR использует кольцевой буфер фиксированного размера для хранения сообщений (так что старые сообщения удаляются только тогда, когда требуется пространство), чтобы разрешить воспроизведение сообщений клиентам, которые повторно подключаются. Вы можете изменить этот размер буфера с помощью параметра IConfigurationManager.DefaultMessageBufferSize .

Закрытие, так как мы не слышали никаких обновлений об объектах, которые остались живы. Не стесняйтесь комментировать дальше, если у вас есть вопросы. Мы всегда можем повторно открыть это, если возникнет проблема, которую необходимо решить!

Я по-прежнему считаю, что это критическая ошибка, и этот вопрос не следует закрывать. Это большая утечка памяти, которая может легко потребить много памяти и привести к сбою приложения из-за DefaultMessageBufferSize по на концентратор . Прямо сейчас я борюсь с этим.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги