Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SqlException Timeout  [new]
Kudep
Member

Откуда: From Russia
Сообщений: 146
Всем привет,
Столкнулся с такой проблемой.
Есть запрос, который обычно выполняется не более 200ms.
Время выполнения у меня логируется, и я вижу по логам, как он периодически выполняется, выполняется, но в один момент он может взять и зависнуть на 30 сек, после чего отрубиться по таймауту.
Сам запрос я уже проанализировал, это апдейт таблицы. Воспроизвести не получается, запрос выполняется очень быстро.

Подскажите, какие вообще средства можно использовать, чтобы понять, почему сиквел-серверу иногда становится так плохо, что время выполнения моего запрос увеличивается на несколько порядков?
11 июл 12, 11:28    [12849342]     Ответить | Цитировать Сообщить модератору
 Re: SqlException Timeout  [new]
step_ks
Member

Откуда:
Сообщений: 936
помониторьте блокировки. при помощи MSSQL Blocks, например.
11 июл 12, 11:45    [12849447]     Ответить | Цитировать Сообщить модератору
 Re: SqlException Timeout  [new]
Kudep
Member

Откуда: From Russia
Сообщений: 146
step_ks
помониторьте блокировки. при помощи MSSQL Blocks, например.

скажите, а блокировки разве могут приводить к таймаутам??
Я так думал, что сиквел он умный и может определять блокировки, и сразу убивать один из запросов.
11 июл 12, 15:58    [12851498]     Ответить | Цитировать Сообщить модератору
 Re: SqlException Timeout  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Kudep
скажите, а блокировки разве могут приводить к таймаутам??
Я так думал, что сиквел он умный и может определять блокировки, и сразу убивать один из запросов.
Вы вообще знаете, что такое блокировки и зачем они нужны?
11 июл 12, 16:01    [12851531]     Ответить | Цитировать Сообщить модератору
 Re: SqlException Timeout  [new]
Glory
Member

Откуда:
Сообщений: 104751
Kudep
Я так думал, что сиквел он умный и может определять блокировки, и сразу убивать один из запросов.

Со взаимоблоикровками(deadlock-ми) сервер именно так и поступает.
А простые блокировки - это обязательная часть любого запроса.
11 июл 12, 20:24    [12852994]     Ответить | Цитировать Сообщить модератору
 Re: SqlException Timeout  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Glory
А простые блокировки - это обязательная часть любого запроса.
А я немного другую терминологию употребляю:
  • Локировки - указанные действие или намерение над ресурсами, это обязанность любого запроса
  • Блокировки - локировки одного запроса повлияли на работу других, что те вынуждены ожидать (нежелательная часть, но приемлемая)
  • Дедлок - взаимо-блокировка (критическая вещь, т.к. нарушает работу системы, убивается один из запросов)
  • 12 июл 12, 01:30    [12853829]     Ответить | Цитировать Сообщить модератору
     Re: SqlException Timeout  [new]
    Kudep
    Member

    Откуда: From Russia
    Сообщений: 146
    step_ks
    помониторьте блокировки. при помощи MSSQL Blocks, например.

    Так как к базе прямого доступа нет, то любой мониторинг невозможен. Максимум, что можно - это попросить выполнить какой-нибудь скрипт для сбора статистики.
    Есть копия базы локально, но на ней никаких блокировок воспроизвести не удалось.
    У кого-нибудь есть идеи, что еще можно предпринять?
    12 июл 12, 08:59    [12854195]     Ответить | Цитировать Сообщить модератору
     Re: SqlException Timeout  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31948
    Kudep
    Так как к базе прямого доступа нет, то любой мониторинг невозможен. Максимум, что можно - это попросить выполнить какой-нибудь скрипт для сбора статистики.
    Если прямого доступа нет, то возможны любые действия, только медленнее.

    Попросите запустить скрипт запуска мониторинга, потом попросите переслать трейс.
    12 июл 12, 10:54    [12854800]     Ответить | Цитировать Сообщить модератору
     Re: SqlException Timeout  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    Kudep
    Максимум, что можно - это попросить выполнить какой-нибудь скрипт ...

    Ну напишите в скрипте подписчик на евенты длительных блокировок. А вторым скриптом (через неделю/месяц) выудите из новой таблы все необходимые данные (глаф блоков). Или админ непробиваемый? :)
    12 июл 12, 11:05    [12854881]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить