Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
1. Всех стопит процесс, который перешел в состояние AWAITING COMMAND (т.е. все выполнилось, ADO уже ничего не ждет, в запросе Sp_who2 видим последний запрос, который выполнялся в этом сеансе)

происходит так:

запрос
-> выполняется долго(причем, это может быть совершенно безобидный запрос на короткой таблице)
-> переходит в состояние suspended
-> переходит в состояние sleeping
-> переходит в состояние AWAITING COMMAND

2. и вот в этом состоянии он может висеть сколько угодно, блокируя все остальное.

3. в этот момент sp_who2 показывает создание последней процедуры из этого запроса

4. я тут же заходил и делал этой же процедуре alter - все пролетало на ура, никаких тормозов на перекомпиляции процедуры.

Куда копать?
22 июн 14, 09:40    [16202246]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Users
Всех стопит процесс, который перешел в состояние AWAITING COMMAND
Если это факт, а не предположение - проверьте наличие незавершенной транзакции в этом процессе.
22 июн 14, 10:44    [16202280]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
invm
Users
Всех стопит процесс, который перешел в состояние AWAITING COMMAND
Если это факт, а не предположение - проверьте наличие незавершенной транзакции в этом процессе.


Вся проблема в том, что как всегда: "оно все работало, никто ничего не трогал - и вот внезапно началось".
22 июн 14, 10:59    [16202293]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Users
"оно все работало, никто ничего не трогал - и вот внезапно началось".
Чудес не бывает и само-собой ничего не начинается.
22 июн 14, 11:11    [16202300]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
Повисшая транзакция. Сделайте корректную обработку ошибок.
22 июн 14, 14:03    [16202531]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
Владислав Колосов,

думал я об этом, коллега, но это бы решилось простым kill. Однако это так не решается. Код не менялся. И что хуже всего, перезагрузка сервера привела к тому, что AWAITING COMMAND исчезли. Что может быть с сервером? Если б транзакция - перезагрузка бы вряд ли помогла.
22 июн 14, 14:08    [16202542]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
А чем процесс Вы пытаетесь убить, свой?
22 июн 14, 14:11    [16202552]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
Проверьте, всё же, DBCC OPENTRAN .
22 июн 14, 14:20    [16202573]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Users
думал я об этом, коллега, но это бы решилось простым kill. Однако это так не решается.
Ну да, процесса уже нет, но он мистическим образом продолжает блокировать другие.
Users
Если б транзакция - перезагрузка бы вряд ли помогла.
Вы считаете, что транзакции продолжают жить после перезагрузки сервера?
22 июн 14, 14:48    [16202613]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
invm
Users
думал я об этом, коллега, но это бы решилось простым kill. Однако это так не решается.
Ну да, процесса уже нет, но он мистическим образом продолжает блокировать другие.
Users
Если б транзакция - перезагрузка бы вряд ли помогла.
Вы считаете, что транзакции продолжают жить после перезагрузки сервера?


Мне кажется, всегда надо писать возраст и опыт, что ли. нет, коллега, я 20 лет занимаюсь ms sql и не считаю, что транзакция продолжает жить после того, как ее откатили или перегрузили сервер.

1. В массовом порядке начались проблемы. При этом код на сервере не менялся никак. При этом я вижу зависания и массово - сообщения AWAITING COMMAND, когда на самом деле их быть не должно.
2. Выполняю перезагрузку. Тот же самый код начал работать без зависаний и без выдачи AWAITING COMMAND. Весь день работает стабильно.

Отсюда я делаю вывод, что проблема не с процедурами, не с открытыми транзакциями, а в чем-то ином, например, с памятью, которая при перезагрузке освободилась и т.п.

Вы думаете иначе? Почему?
22 июн 14, 15:52    [16202698]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Users
не считаю, что транзакция продолжает жить после того, как ее откатили или перегрузили сервер.
Тогда как трактовать ваши слова:
Users
Если б транзакция - перезагрузка бы вряд ли помогла.
?

Users
Отсюда я делаю вывод, что проблема не с процедурами, не с открытыми транзакциями, а в чем-то ином, например, с памятью, которая при перезагрузке освободилась и т.п.

Вы думаете иначе? Почему?
Потому что выводы делают не на основе впечатлений и предположений, а хотя бы на основе анализа вывода тех же sp_who/sp_who2 на предмет определения кто кого блокирует и последующего выяснения причин этого.
22 июн 14, 16:10    [16202730]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Users
запрос
-> выполняется долго(причем, это может быть совершенно безобидный запрос на короткой таблице)
Не пробовали разобраться почему так происходит? Возможно блокировки.
Users
-> переходит в состояние suspended
-> переходит в состояние sleeping
-> переходит в состояние AWAITING COMMAND
sleeping это Status, а AWAITING COMMAND это Command. Процесс не может перейти из одного в другое.

Users
2. и вот в этом состоянии он может висеть сколько угодно, блокируя все остальное.
Сколько при этом у процесса открытых транзакций? Блокирует из-за какого ресурса?

Users
3. в этот момент sp_who2 показывает создание последней процедуры из этого запроса
4. я тут же заходил и делал этой же процедуре alter - все пролетало на ура, никаких тормозов на перекомпиляции процедуры.
Это вообще к чему?

Users
Куда копать?
В повисшие открытые транзакции.

Users
я 20 лет занимаюсь ms sql
Фантазия у вас богатая

Users
1. В массовом порядке начались проблемы. При этом код на сервере не менялся никак.
Код мог быть кривой изначально, и не только на сервере но и в приложении, а проявляться начало только сейчас.
Users
При этом я вижу зависания и массово - сообщения AWAITING COMMAND, когда на самом деле их быть не должно.
Что значит не должно? Вы лично убедились что все вызовы с клиента делаются правильно и везде корректная обработка ошибок?
Users
2. Выполняю перезагрузку. Тот же самый код начал работать без зависаний и без выдачи AWAITING COMMAND. Весь день работает стабильно.
Отсюда я делаю вывод, что проблема не с процедурами, не с открытыми транзакциями
После того как мы сделали вскрытие, пациент перестал жаловаться на повышенное давление, отсюда делаем вывод, что проблема была не с сердцем.
Users
, а в чем-то ином, например, с памятью, которая при перезагрузке освободилась и т.п.
Сессии которые не выполняют комманд не потребляют ресурсов, кроме блокировок. С памятью правда был один баг, когда она не выделялась для коннекта, но не освобождалась. Ну даже если предположить, что это память, то что мешает вам посмотреть ее потребление на сервере в момент зависания?
23 июн 14, 10:56    [16205162]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
Еще раз:
автор
Проверьте, всё же, DBCC OPENTRAN .
23 июн 14, 12:16    [16205680]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
Mind
Users
2. и вот в этом состоянии он может висеть сколько угодно, блокируя все остальное.
Сколько при этом у процесса открытых транзакций? Блокирует из-за какого ресурса?

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

Users
я 20 лет занимаюсь ms sql
Фантазия у вас богатая

Нормальная у меня фантазия. Еще с Ashton-Tate/Microsoft SQL начинал, это, если память не подводит, 1988.

Users
1. В массовом порядке начались проблемы. При этом код на сервере не менялся никак.
Код мог быть кривой изначально, и не только на сервере но и в приложении, а проявляться начало только сейчас.


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

Как-то проверять, что именно было не в порядке - сейчас прямо не выйдет, потому что уже все в норме. Но хотя бы где копать?

К сообщению приложен файл. Размер - 47Kb
23 июн 14, 15:06    [16206925]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
Users
Владислав Колосов,

думал я об этом, коллега, но это бы решилось простым kill. Однако это так не решается. Код не менялся. И что хуже всего, перезагрузка сервера привела к тому, что AWAITING COMMAND исчезли. Что может быть с сервером? Если б транзакция - перезагрузка бы вряд ли помогла.


Может быть код, который запускает эту конкретную команду не менялся. Но может быть у вас появился и поменялся другой код, который делает блокировки и подвешивает команду, которая не менялась. Есть ли изменение в коде приложения или БД затрагивающие таблицы используемые в вашей команде.
23 июн 14, 15:28    [16207149]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Users
Отсюда, опять же, имею предположение, что кривой не код, а что-то с серваком было.
Вот же упертый :) Вам же говорят - соединение в состоянии sleeping может блокировать другие только если в нем присутствуют неснятые блокировки, т.е. имеет место незавершенная транзакция.
Users
И очень хочу понять, что.
Например, инструкция insert/update/delete, выполнявшаяся не в режиме autocommit, отвалилась по commnad timeout. В этом случае как раз будет sleeping, awaiting command и незавершенная транзакция.
23 июн 14, 15:41    [16207296]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
rantu
Member

Откуда: Krasnodar->Moscow->Spb->Berlin->Boston
Сообщений: 40
У меня на серверах было такое поведение в mssql 2012 с запросом вида "select ... into #tmp_table from view". Судя по sp_who2 процесс был в AWAITING COMMAND, но в Quest Spotlight у этого процесса продолжал расти счетчик logical reads. Я долго не разбирался, но грешил на внезапно появившийся некорректный план запроса. Решил тем, что добавил в select-е option(recompile)
23 июн 14, 16:17    [16207618]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
invm
Users
Отсюда, опять же, имею предположение, что кривой не код, а что-то с серваком было.
Вот же упертый :) Вам же говорят - соединение в состоянии sleeping может блокировать другие только если в нем присутствуют неснятые блокировки, т.е. имеет место незавершенная транзакция.
Users
И очень хочу понять, что.
Например, инструкция insert/update/delete, выполнявшаяся не в режиме autocommit, отвалилась по commnad timeout. В этом случае как раз будет sleeping, awaiting command и незавершенная транзакция.


Давайте еще раз. С вашими утверждениями я полностью согласен. Именно "инструкция insert/update/delete, выполнявшаяся не в режиме autocommit, отвалилась по commnad timeout" у меня и происходит.

Вопрос в том, почему это внезапно стало оказывать критическое влияние на сервер? И далее - перезагрузка сервера и пересчет статистики - помогли. Код на клиенте не менялся, а значит, у меня и сейчас происходят "инструкция insert/update/delete, выполнявшаяся не в режиме autocommit, отвалилась по commnad timeout" - но критического влияния на сервер это уже не оказывает. Клиентов не стало меньше, даже больше. Вот в чем вопрос - тот же самый код - но работает уже нормально. Почему?
24 июн 14, 09:29    [16210003]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
скорее всего.. после обновления статистики (начали узатька как минимум индексы и правильно , пропали ошибки кардинальности и все такое) ваши супер селекты , апдейты и делиты начали влазить в окно таймаута вашего веб сервиса и он перестал отваливаться
24 июн 14, 11:16    [16210613]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Users
С вашими утверждениями я полностью согласен. Именно "инструкция insert/update/delete, выполнявшаяся не в режиме autocommit, отвалилась по commnad timeout" у меня и происходит.
Отлично.
Users
Вопрос в том, почему это внезапно стало оказывать критическое влияние на сервер?
Не внезапно. Просто объем данных в БД вырос и превысил некий порог, после которого запросы перестали выполняться за допустимое время.
Users
И далее - перезагрузка сервера и пересчет статистики - помогли.
Тогда вы должны понимать, что:
- оптимизатор при построении плана выполнения использует статистику;
- устаревшая статистика является причиной неоптимального плана;
- неоптимальный план на ваших данных стал приводить к таймауту;
- обновление статистики позволило оптимизатору построить более оптимальный план и таймауты ушли;
- сервер можно было не перезагружать.
Users
Код на клиенте не менялся, а значит, у меня и сейчас происходят "инструкция insert/update/delete, выполнявшаяся не в режиме autocommit, отвалилась по commnad timeout"
Поразительный вывод...

ЗЫ: Ваш клиентский код - кривой. Ибо отсутствует обработка ошибок.
24 июн 14, 11:33    [16210727]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
invm,

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

1. Начались проблемы в 22-00 субботы.
2. Статистика пересчиталась к 07-00 воскресенья.
3. Вплоть до 9-40, до перезагрузки сервера, проблемы не исчезали.

Насчет клиентского кода - может быть, но он не мой. В какую сторону хоть направить разработчиков?
24 июн 14, 11:57    [16210905]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Users
invm,
Насчет клиентского кода - может быть, но он не мой. В какую сторону хоть направить разработчиков?


В сторону закрывания коннектов с сервером после завершения работы с ним.
24 июн 14, 12:32    [16211168]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
WarAnt,

Этого они принципиально делать не хотят, бо на открытие-закрытие ощутимые ресурсы тратятся.
24 июн 14, 12:38    [16211191]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Users
WarAnt,

Этого они принципиально делать не хотят, бо на открытие-закрытие ощутимые ресурсы тратятся.


Вы меня насмешили чесслово, то есть на простой сервера ресурсы не жалко, а на открытие закрытие коннектов жалко?:)
24 июн 14, 12:52    [16211289]     Ответить | Цитировать Сообщить модератору
 Re: проблема с AWAITING COMMAND - зависание и тормоза на сервере  [new]
Users
Member

Откуда:
Сообщений: 341
WarAnt,

Здесь простая позиция: "у нас все хорошо, коннектов к серверу 200, это не так много, чтобы машина с 128 гигами оперативки, 40 процессорами затыкалась и умирала. Ищите проблему на сервере". Вот я и ищу.
24 июн 14, 13:13    [16211409]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить