2

Может кто-нибудь сказать мне, если тип поведения указано в дамп памяти из Visual Studio w3wp dump outputAzure Redis Использование памяти (w3wp.exe свалка) Insight

нормально? например, работает ли StackExchange.Redis.PhysicalConnection с высоким по инклюзивному размеру (байты)? Или это действительно высоко?

В основном мы испытываем медлительность с нашей веб-головкой после преобразования нашего кода для запуска на Azure Redis с сеанса (мы теперь сериализуем и десериализируем по мере необходимости и сохраняем в кеш-памяти Redis), но общая производительность ужасна.

Запросы завершены, но это может занять некоторое время, из-за единственной резьбовой природы Redis? Мы используем конфигурацию, описанную в качестве лучшей практики командой Azure Redis, как описано здесь. https://stackoverflow.com/a/28821220

Что еще мы можем рассмотреть, чтобы помочь повысить производительность, поскольку текущая производительность неприемлема как жизнеспособная замена нашей реализации на основе сеанса (например, asp.net webforms/sql server/azure IaaS), которые мы имеем в настоящее время.

PS - Сериализация и десериализация действительно вызывает убой, мы понимаем, что IIS испортил нам свой собственный специальный пул памяти для несериализованных наборов данных и т. Д., Но нет никакого способа, чтобы это приводило к увеличению на 300-500% страница загружается, как сейчас.

Мысли оценили!

Wieman @ Тим

Насколько велики ваши кэшированные объекты? Они могут варьироваться в размерах, есть несколько наборов данных, хранящихся в redis.

Какие у них объекты? Большинство объектов - это пользовательские объекты с переменным числом свойств, некоторые даже содержат коллекции.

Какой сериализатор вы используете? Мы используем Newtonsoft для всего, что не требует Rowstate и требуемого двоичного сериализатора для наборов данных, которые нуждаются в rowstate.

Вся сериализация и последующая десериализация выполняются в коде перед вызовом redis баз данных StringGet или StringSet.

+0

Я не знаю о служебных данных памяти, но я знаю, что сериализация/десериализация могут вызвать много накладных расходов (сравнительно). Я видел, как легко вызывать 10x perf. деградации только из-за сериализации [de]. Как хранятся ваши кэшированные объекты?Какими объектами они являются? Какой сериализатор вы используете? –

+0

В дополнение к другим вопросам я имел в виду «Насколько велики ваши кешированные объекты»? –

+0

Возможно, вы захотите сделать некоторые временные интервалы для вашей сериализации/десериализации, особенно на больших объектах и ​​при использовании «двоичного сериализатора». Если это означает, что вы используете .net BinaryFormatter, ну, это может быть ужасно медленным, особенно с большими вложенными списками. Многим людям повезло с protobuf.net как по скорости, так и по размеру сериализованных данных. –

ответ

1

Если появляется, на самом деле, память была чрезвычайно высокой, мы ошибочно создавали тысячи подключений к Redis вместо одного экземпляра Redis Cache.

Несколько соединений не были очищены GC до того, как процессор достигнет 98%, и сервер перестанет отвечать на запросы.

Мы скорректировали наш код, чтобы убедиться, что один экземпляр соединения с Azure Redis используется для всех вызовов Redis и тщательно протестирован.

Похоже, что это разрешается, так как Azure Redis больше не питается памятью или ресурсами процессора.

 Смежные вопросы

  • Нет связанных вопросов^_^