Кажется, бесконечная трассировка стека в EF 4.0 и низкая производительность запросов под нагрузкой

В большой модели EF 4.0 (более 700 сущностей) мы получаем низкую производительность System.Data.Objects.ObjectContext.CreateObjectSet (строка) . Вызов этого вызывается запросом типа context.Users.FirstOrDefault (u => u.userId = 100) .

В целом запрос выполняется хорошо, но под нагрузкой запрос не выполняется. хорошо. Мы выполняем 20 одновременных пользовательских нагрузок на страницу, которая использует этот запрос. Приложение для этой страницы находится в режиме профилирования, т.е. мы используем профилировщик производительности Visual Studio 2010 при выполнении этого небольшого нагрузочного теста. Профилировщик использует режим «Выборка».

Приложение построено с помощью ASP.NET 4.0 / ASP.NET MVC 3.0 и размещается в IIS 7.5 на сервере Windows 7, когда выполняется нагрузочный тест.

Отчет о профилировании показывает стек вызовов, который кажется "бесконечным", то есть много раз обращаются к нижеследующим строкам.

System.Data.Mapping.DefaultObjectMappingItemCollection.LoadObjectMapping
    System.Data.Mapping.DefaultObjectMappingItemCollection.LoadAssociationTypeMapping
        System.Data.Mapping.DefaultObjectMappingItemCollection.LoadObjectMapping
            System.Data.Mapping.DefaultObjectMappingItemCollection.LoadAssociationTypeMapping

В чем может быть причина низкой производительности и таких бесконечных стеков вызовов?

14
задан Dhwanil Shah 8 August 2011 в 05:51
поделиться