Замедление работы сайта и ошибки после перехода с .NET 2 на .NET 4 - PullRequest
3 голосов
/ 15 декабря 2011

Мы изменили версию .NET в устаревшем веб-приложении с 2 на 4.

  1. Приложение стало значительно медленнее и
  2. Теперь мы получаем эту ошибку в некоторых случаях:

    System.Data.SqlClient.SqlException: Transaction (Process ID 85) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Эта ошибка выдается в запросе SELECT во время выполнения операции поиска / поиска. (Не операция обновления типа).

Устаревшее приложение работает под управлением NHibernate версии 2.2, которая довольно старая. Этот пакет генерирует много запросов. Просто обновление до последней версии 3.2 не улучшило скорость. Это, кажется, избавиться от ошибки. Но это вызывает другие ошибки, поэтому мы не можем просто обновить без тщательного анализа и тестирования.

Наконец-то мои вопросы:

  1. Есть предложения?

  2. Мы добавили WITH (NOLOCK) к запросу SQL, и ошибка исчезла. Но может ли это вызвать другие проблемы? (Учитывая, что во время действий пользователя, которые вызывают эту ошибку, обновления не выполняются - я не уверен, почему транзакции участвуют в поиске).

Мы очень новички в этом приложении, переняв его у другого разработчика. Так что любая помощь ценится, даже просто как отладка. Мы пробуем много вещей, но не очень хорошо знакомы с NHibernate, поэтому, в частности, было бы неплохо получить представление о NHibernate и версии .NET.

1 Ответ

2 голосов
/ 15 декабря 2011

Одна из возможностей состоит в том, что при обновлении произошла ошибка, и вы не изящно выдает rollback.Как бы странно это ни звучало, при обновлении с .net2 до .net4 могла возникнуть проблема с сеансом NH.Это также может иметь место, если вы перешли от классического к интегрированному режиму.

Один из вариантов, который не учитывает мою теорию, - это загрузить NHProf и запустить свои тесты локально (включая стресс-тесты), чтобы увидетьесли вы получаете сеансы, которые не открываются / не закрываются / не фиксируются должным образом.

Даже если это не проблема сеанса, NHProf может показать вам места, где находятся ваши проблемные запросы.Во время тестирования я также запустил бы SQL Server Profiler, чтобы обесценить теорию Дэвида.

Я думаю, что эти два варианта - ваш лучший выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...