Как найти причину Deadlock в MS SQL

Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Как найти причину Deadlock в MS SQL

Post by Сабина »

Скажу банальность. В одном месте я нашла именно MSSQL deadlock .... прикрутив к апликейшену App Dynamics monitoring. Он показывал SQL exception, который не было видно otherwise. В логах например не было видно ( какой то умник его глушил). Стали раскапывать, оказалось этот экспепшен выбрасывался как результат дедлока. Там правда был еще Quartz scheduler замешан, причина была в неверной конфигурации
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
ie
Уже с Приветом
Posts: 11019
Joined: 15 May 2002 02:09
Location: Boston, MA

Re: Как найти причину Deadlock в MS SQL

Post by ie »

Сабина wrote: 09 Nov 2017 21:44 Скажу банальность. В одном месте я нашла именно MSSQL deadlock .... прикрутив к апликейшену App Dynamics monitoring. Он показывал SQL exception, который не было видно otherwise. В логах например не было видно ( какой то умник его глушил). Стали раскапывать, оказалось этот экспепшен выбрасывался как результат дедлока. Там правда был еще Quartz scheduler замешан, причина была в неверной конфигурации
надеюсь ВСЕ переписали с нуля? :wink:
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Re: Как найти причину Deadlock в MS SQL

Post by zVlad »

Сабина wrote: 09 Nov 2017 21:44 Скажу банальность. В одном месте я нашла именно MSSQL deadlock .... прикрутив к апликейшену App Dynamics monitoring. Он показывал SQL exception, который не было видно otherwise. В логах например не было видно ( какой то умник его глушил). Стали раскапывать, оказалось этот экспепшен выбрасывался как результат дедлока. Там правда был еще Quartz scheduler замешан, причина была в неверной конфигурации
Для меня - DBA DB2 for zOS - звучит как дикость какая то. Я не могу себе близко представить такого. По всем дедлокам в DB2 я узнаю элементарным просмотром сообщений DB2 в системном журнале (пример сообщения я приводил выше в этой теме), или обработкой записей в трассировке которую невозможно отключить. Кроме того поведение DB2 в отношении дедлоков никакими конфигурациями изменить не возможно, кроме необязательного таймаута, который по умолчанию 5 секунд и который существует для того чтобы программы имеющее встроенную обработку дедлоков с повторением запросов не слишком быстро повторялись и возможно снова попадали в дедлок.
Я специально распрашивал нашего MSSQL DBA о работе с дедлоками. Получалось что все так же как и в DB2, но читая такого рода сообщения я, уже не в первый раз прихожу к заключения что "также" не всегда на самом деле так.

P.S. Да и само название этой темы мои подозрения (на самом деле это уже давно не подозрения, а уверенность) подтверждают. А именно, нет такой проблемы: поиск причин дедлоков, потому что это уровень элементарной диагностики, которая просто должна быть без специальных танцев с бабнами. А вот проблема написания программ без опасности создания ситуаций с дедлоками в процессе их выполнения действительно существует. Выше я описал несколько способов, но вряд ли хоть кто-нибудь всерьез здесь это воспринял судя по всему. Учить этому надо с первого класса программирования для манагеров ресурсов совместного доступа с использованием замков. Но видимо этому не учат коль скоро проблема дедлоков спустя десятки лет появления первых таких манагеров до сих пор актуальна.
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Re: Как найти причину Deadlock в MS SQL

Post by zVlad »

Сабина wrote: 09 Nov 2017 21:44 Скажу банальность. В одном месте я нашла именно MSSQL deadlock .... прикрутив к апликейшену App Dynamics monitoring. Он показывал SQL exception, который не было видно otherwise. В логах например не было видно ( какой то умник его глушил). Стали раскапывать, оказалось этот экспепшен выбрасывался как результат дедлока. Там правда был еще Quartz scheduler замешан, причина была в неверной конфигурации
Вы уже второй раз на этой странице темы "навели тень на плетень" на "сам" MS SQL (RDBMS), который, конечно, тоже программа, но по идее пишется и тестируется (да и приемы написания там другие должны быть) иначе чем большенство поделушек массовых бизнес приложений.

Не могли Вы (не только для меня, я уверен) насколько можно детальней описан Ваши находки и понимание того что ж там было не так и почему? Вы говорите "причина была в неверной конфигурации". Что за конфигурация, как она могла вызвать дедлок? Это реально интересно.
Спасибо.
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Re: Как найти причину Deadlock в MS SQL

Post by zVlad »

ie wrote: 09 Nov 2017 21:56
Сабина wrote: 09 Nov 2017 21:44 Скажу банальность. В одном месте я нашла именно MSSQL deadlock .... прикрутив к апликейшену App Dynamics monitoring. Он показывал SQL exception, который не было видно otherwise. В логах например не было видно ( какой то умник его глушил). Стали раскапывать, оказалось этот экспепшен выбрасывался как результат дедлока. Там правда был еще Quartz scheduler замешан, причина была в неверной конфигурации
надеюсь ВСЕ переписали с нуля? :wink:
Судя по всему поправили конфигурацию. Какую только не ясно, но может Сабина прольет свет. Давайте все вместе ее попросим об этом.
User avatar
ie
Уже с Приветом
Posts: 11019
Joined: 15 May 2002 02:09
Location: Boston, MA

Re: Как найти причину Deadlock в MS SQL

Post by ie »

zVlad wrote: 14 Nov 2017 15:17 Давайте все вместе ее попросим об этом.
давайте. саааа-бииии-нааа :Bravo:
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Как найти причину Deadlock в MS SQL

Post by Сабина »

ie wrote: 14 Nov 2017 16:20
zVlad wrote: 14 Nov 2017 15:17 Давайте все вместе ее попросим об этом.
давайте. саааа-бииии-нааа :Bravo:
Это было 4 года назад, смеетесь что ли :)
Одно знаю что до меня никто и не знал про этот эксепшен и собственно проблему. Просто наблюдали что "почему то тут медленно очень".
Но я как обычно влезу и как сделаю что нибудь нетрадиционное :mrgreen:
https://www.youtube.com/watch?v=wOwblaKmyVw

Return to “Вопросы и новости IT”