NHibernate SQL Server Приостановленные процессы - PullRequest
3 голосов
/ 06 февраля 2012

Я столкнулся с проблемой, на которую, я надеюсь, кто-нибудь может помочь дать мне какое-то указание. Работаем над приложением, которое работает несколько лет, на .NET 3.5 и NHibernate 1.2. На прошлой неделе возникла проблема, когда транзакция блокировалась случайно. Я заметил, что NH имел значение command_timeout 100000. Теперь я уменьшил его до 30, так как 100000 казалось сумасшедшим! Проблемы все еще возникают.

Монитор активности SQL Server показывает блокирующую транзакцию при возникновении проблемы, обычно в состоянии SUSPENDED. Если я убиваю процесс блокировки, блокируемые процессы срабатывают, и система в порядке.

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

Что, я думаю, могло вызвать это? Ничего очевидного ... мы выпустили пару небольших изменений, но ни один из них не должен иметь такого эффекта. Обновления / пакеты обновления для Windows также были установлены в то же время. Могут ли обновления SQL / .NET SP быть причиной этой проблемы ??

Я знаю, что здесь много, но пытаюсь дать столько, сколько имею в данный момент.

НОВАЯ ИНФОРМАЦИЯ: Теперь, когда command_tinmeout обновлен до 30 секунд, запросы, которые превышают это время выполнения, автоматически прерываются - или я вижу это в Activity Monitor. Тем не менее, кажется, что происходит что-то еще, поскольку повторяющиеся запросы также завершаются с таймаутом. Однако, если я остановлюсь и запущу пул приложений, все начнет работать как обычно, по крайней мере, на некоторое время.

1 Ответ

1 голос
/ 06 февраля 2012

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

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

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

...