У нас есть серверная ферма, состоящая из около 40 серверов, на которые мы обновляем код каждые пару недель.Одна вещь, которую мы заметили, когда мы запускаем код в реальном времени, - это после развертывания сборок и выполнения сброса IIS и помещения его обратно в BigIp (F5), и он получает трафик, сервер блокируется в течение примерно 10 минут, а клиенты просто вращаются до возможногоtimeout.
Глядя на perfmon, мы видим резкий всплеск количества объектов finally и количества закрепленных объектов, что приводит меня к исследованию проблем с памятью.
Итак, одна вещь, которую я начал изучатьнаша конфигурация Unity IoC.В global.asax.cs мы регистрируем около 15 интерфейсов, большинство из которых используют ContainerControlledLifetimeManager для управления временем жизни.Обычно с кодом никогда не возникает проблем, кроме как в этом десятиминутном окне, поэтому моей первой мыслью была проблема с управлением памятью или ресурсами.
Кто-нибудь знает, нужно ли вам явно использовать Dispose () вашего контейнера Unity илиэто как-то обрабатывается Unity автоматически?Сегодня я заметил, что для Application_End не было проводки Dispose на месте, поэтому я подумал, может быть, когда серверы снова включаются после сброса IIS, возникает проблема Unity или ресурса объекта, пока GC не появится и не освободит память (десять минутнужно подойти).
Любая помощь приветствуется!