У меня возникла проблема, что я надеюсь, что кто-то может помочь мне дать некоторое направление. Работа над приложением, которое выполняется несколько лет, на .NET 3.5 и NHibernate 1.2. Были проблемы на прошлой неделе, когда транзакция, похоже, блокируется случайным образом. Я заметил, что у NH было command_timeout из 100000. Я теперь привел это к 30, поскольку 100000 казались сумасшедшими! Проблемы все еще происходят.NHibernate SQL Server Suspended Processes
Монитор активности SQL Server показывает транзакцию блокировки при возникновении проблемы, обычно в состоянии SUSPENDED. Если я убью процесс блокировки, эти процессы блокируются, и система в порядке.
Завершая проверку процесса блокировки, я могу видеть, что выполняемый оператор SQL выполняется, что вызывает проблему, но это оператор, выполняемый через большую часть системы, для получения общих данных на большинстве страниц.
Что, по-моему, могло вызвать это? Ничего очевидного ... мы выпустили пару небольших изменений, но ни один из них не должен иметь этого эффекта. Обновления и обновления для Windows были установлены также примерно в одно и то же время. Могут ли быть причиной проблемы с SQL/.NET SP?
Я знаю, что здесь много, но стараюсь дать столько, сколько у меня есть на данный момент.
NEW INFO: Теперь, когда command_tinmeout был обновлен до 30 секунд, запросы, которые превышают это время выполнения, автоматически удаляются - или так я вижу в Activity Monitor. Однако, похоже, что что-то еще происходит, поскольку повторные запросы терпят неудачу с тайм-аутом. Однако, если я остановлюсь и запустил пул приложений, все начнет работать как обычно, по крайней мере на некоторое время.
Спасибо за информацию. Похоже, что рассматриваемый запрос - это в основном запрос на выбор, и в большинстве случаев он читает до трех строк из таблицы в любой момент времени. Каков наилучший способ проверить медленные запросы на запись? – TheITGuy
Это зависит от того, насколько легко воспроизводиться. Монитор активности отслеживает блокировку по столбцу, а затем вы можете видеть, что ждет ваш выбор, другой вариант - трассировка или просмотр истории в DMV на SQL-сервере – jakobandersen