Производительность процессора Asp.net NHibernate после обновления - PullRequest
0 голосов
/ 06 марта 2012

У кого-нибудь еще были перепады ЦП после перехода на NHibernate?

Мы перешли на использование NHibernate около 2 лет назад.С тех пор у нас были проблемы с сервером, работающим с ЦП около 60 - 80. У нас также были проблемы с сервером, на котором не хватало памяти.

Нам постоянно предлагалось оптимизировать наш запрос.Что мы и сделали с ограниченным успехом.Только когда я недавно обновил NHibernate 2.1 до 3.2, мы наконец увидели улучшение процессора.Он снизился с 60 процентов в среднем до 30 процентов.Я был поражен, мне сказали многие, которые считают себя экспертами, что обновление NHibernate даст лишь ограниченные улучшения, если таковые вообще будут.

Мой вопрос ... Кто-нибудь еще заметил скачки в процессоре с помощью NHibernate и увидели ли они какое-либо улучшение после обновления основной версии?И наконец, почему новая версия работает намного лучше?Я знаю, что NHibernate 3 имеет гораздо лучшую поддержку linq, и около 70 процентов моих запросов используют Linq, поэтому я думаю, что это может быть причиной того, что я вижу лучшую производительность.

Кроме того, у кого-нибудь есть идеи, как я могу оптимизировать NHibernate для получения еще лучшей производительности процессора, кроме обновления библиотек, которые я уже сделал.

В настоящее время я использую NHibernate 3.2 и свободно работающий NHibernate 1.2, обновленный с 2.1 и 1.0 соответственно.

1 Ответ

3 голосов
/ 06 марта 2012

Я подозреваю, что вам сказали то же самое, что я собираюсь рекомендовать, но я призываю вас рассмотреть все возможности и обесценить их.

Weve consistently been told to optimize our query - Подозрения всегда связаны с SQL-запросом, сгенерированным ORM, или с количеством времени, которое БД тратит на выполнение запроса. Это разумный совет, и вы должны опровергнуть это, используя следующие методы.

Сначала я бы настроил trace на работающем сервере базы данных, работающем в течение недели. Как только это будет сделано, вы можете получить предложения по индексам или вопросам, связанным с SQL.

Во-вторых, я бы запустил NHProf на своем блоке разработки и провел несколько стресс-тестов на часто используемых страницах или страницах, на которых было много поездок в базу данных, чтобы увидеть, что происходит за кулисами с NHibernate. NHProf даст вам советы по различным проблемам, в том числе; выберите n + 1, неограниченные результаты, возвращено большое количество строк, запросы со слишком большим количеством объединений и т. д. Опять же, этот инструмент неоценим для преодоления разрыва между сервером SQL и вашим кодом.

Надеемся, что после этого упражнения у вас появятся идеи о том, как решить определенные проблемы, представьте кеширование ИЛИ, если вы обнаружите, что у вас нет элементов для решения, дайте ценную обратную связь, которую вы затем сможете опубликовать в группе NHUser.

В конце концов, если подумать, десятки тысяч пользователей используют NHibernate. Я сам использовал NHibernate в течение нескольких лет и подписался на группу NHusers, и раньше я не видел проблемы с перепадом ресурсов процессора. Всегда оказывается, что либо; сгенерированный SQL, база данных находится под давлением или гидратируются большие наборы записей

...