Я столкнулся с проблемой, на которую, я надеюсь, кто-нибудь может помочь дать мне какое-то указание.
Работаем над приложением, которое работает несколько лет, на .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. Тем не менее, кажется, что происходит что-то еще, поскольку повторяющиеся запросы также завершаются с таймаутом. Однако, если я остановлюсь и запущу пул приложений, все начнет работать как обычно, по крайней мере, на некоторое время.