Сегодня я исследовал медлительность в нашей системе. Добавляя некоторые журналы отладки, я сузил его к этому сегменту:Почему Container.Configure занимает так много времени?
var db = MyDbContext.ForShard(shardKey);
_logger.Debug("Point 1");
container.Configure(cfg =>
{
_logger.Debug("Anon 1");
cfg.For<MyDbContext>().Use(db);
_logger.Debug("Anon 2");
});
_logger.Debug("Point 2");
баз данных является sharded и shardKey
определяет, какой осколок использовать. Вызов MyDbContext.ForShard()
возвращает соединение с базой данных, строка подключения которого относится к правильному осколку. Затем рассматриваемый фрагмент сообщает StructureMap Container
использовать этот экземпляр для инъекции зависимостей.
В журналах временной лаг между каждой линией ничтожно мал, за исключением разрыва между «Anon 2» и «Point 2», который может занимать область секунды. Нехорошо. Но я никогда не видел, чтобы StructureMap так долго настраивал использование.
Я делаю что-то неправильно здесь?
Настройка контейнера требуется время. Для большого приложения многие секунды не являются исключением. Почему эта задержка составляет 1 секунду? – Steven