Не собирается ТЖ по блокировкам СУБД.

1. user612295_death4321 02.05.18 00:59 Сейчас в теме
Коллеги, добрый день. Можете уточнить по таким событиям как lka, lkp и т.д., не могу понять почему они у меня не ловятся, а так же при перехвате всех событий DBMSSQL при свойствах = all я их так же не вижу.

Версия 1С: 1С:Предприятие 8.3 (8.3.9.1850)
Режим совместимости 8.2.16, может быть он виноват ?

Текущий конфиг ТЖ ниже, сами папки рп хост создаются из чего я делаю вывод о том, что конфиг должен быть настроен правильно.

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
   <latch_debug:log xmlns:latch_debug="http://v8.1c.ru/v8/tech-log" location="путь\LKA" history="1">
      <latch_debug:event>
         <latch_debug:eq property="Name" value="DBMSSQL"/>
         <latch_debug:eq property="p:processName" value="NameBD"/>
         <latch_debug:eq property="lka" value="1"/>
      </latch_debug:event>
      <latch_debug:property name="p:processName"/>
      <latch_debug:property name="t:computerName"/>
      <latch_debug:property name="t:connectID"/>
      <latch_debug:property name="Trans"/>
      <latch_debug:property name="dbpid"/>
      <latch_debug:property name="Context"/>
      <latch_debug:property name="Sdbl"/>
      <latch_debug:property name="lka"/>
      <latch_debug:property name="lkato"/>
      <latch_debug:property name="lkaid"/>
      <latch_debug:property name="Sql"/>
      <latch_debug:property name="Func"/>
      <latch_debug:property name="tableName"/>
      <latch_debug:property name="Usr"/>
   </latch_debug:log>
   <latch_debug:log xmlns:latch_debug="http://v8.1c.ru/v8/tech-log" location="\\путь\LKP" history="1">
      <latch_debug:event>
         <latch_debug:eq property="Name" value="DBMSSQL"/>
         <latch_debug:eq property="p:processName" value="NameBD"/>
         <latch_debug:eq property="lkp" value="1"/>
      </latch_debug:event>
      <latch_debug:property name="p:processName"/>
      <latch_debug:property name="t:computerName"/>
      <latch_debug:property name="t:connectID"/>
      <latch_debug:property name="Trans"/>
      <latch_debug:property name="dbpid"/>
      <latch_debug:property name="Context"/>
      <latch_debug:property name="Sdbl"/>
      <latch_debug:property name="lkp"/>
      <latch_debug:property name="lkpid"/>
      <latch_debug:property name="lkpto"/>
      <latch_debug:property name="lksrc"/>
      <latch_debug:property name="Sql"/>
      <latch_debug:property name="Func"/>
      <latch_debug:property name="tableName"/>
      <latch_debug:property name="Usr"/>
   </latch_debug:log>
</config>
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
21. Merc 40 06.05.18 16:24 Сейчас в теме +5 $m
1) глянь главы на ИТС
3.19.2.12. Элемент <dbmslocks>
3.19.4. Вывод информации о взаимных блокировках

<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
    <dbmslocks/>
    <log history="10" location="\\путь\LKA">
        <event>
            <eq property="name" value="dbmssql"/>
            <eq property="lka" value="1"/>
        </event>
        <property name="all"/>
    </log>
</config>
Показать


Пруфик

33:46.018000-15999,DBMSSQL,5,process=rphost,p:processName=test,OSThread=8776,t:clientID=8,t:applicationName=1CV8C,t:computerName=K1709040,t:connectID=3,SessionID=11,Usr=DefUser,AppID=1CV8C,Trans=1,dbpid=55,Sql=COMMIT TRANSACTION,lka=1,lkaid=2,lkato=266,Context='Форма.Вызов : ВнешняяОбработка.Блокируем.Форма.Форма.Модуль.БлокируемНаСервере
ВнешняяОбработка.Блокируем.Форма.Форма.Форма : 23 : ЗафиксироватьТранзакцию();'

Обработка для воспроизведения

&НаКлиенте
Процедура Блокируем(Команда)

	БлокируемНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура БлокируемНаСервере()

	НачатьТранзакцию();
	
	Выборка = Справочники.Организации.Выбрать();
	Выборка.Следующий();
		
	ОрганизацияОбъект = Выборка.Ссылка.ПолучитьОбъект();
	ОрганизацияОбъект.Наименование = Строка(Новый УникальныйИдентификатор);
	ОрганизацияОбъект.Записать();
	
	ЗапуститьПриложение("cmd ping ya.ru -t",, Истина);
	
	ЗафиксироватьТранзакцию();
		
КонецПроцедуры

&НаКлиенте
Процедура Блокируемся(Команда)
	
	БлокируемсяНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура БлокируемсяНаСервере()

	НачатьТранзакцию();
	
	Выборка = Справочники.Организации.Выбрать();
	Выборка.Следующий();
		
	ОрганизацияОбъект = Выборка.Ссылка.ПолучитьОбъект();
	ОрганизацияОбъект.Наименование = Строка(Новый УникальныйИдентификатор);
	ОрганизацияОбъект.Записать();
	
	ЗафиксироватьТранзакцию();
	
КонецПроцедуры

&НаКлиенте
Процедура Дедлок(Команда)
	
	ДедлокНаСервере()	
	
КонецПроцедуры

&НаСервере
Процедура ДедлокНаСервере()
	
	
	НачатьТранзакцию();
	
	Выборка = Справочники.Организации.Выбрать();
	Выборка.Следующий();
	
	ЗапуститьПриложение("cmd ping ya.ru -t",, Истина);
	
	ЗафиксироватьТранзакцию();	
		
КонецПроцедуры

&НаСервере
Процедура ДедлокНачалоНаСервере()

	НачатьТранзакцию();
	
	Выборка = Справочники.Организации.Выбрать();
	Выборка.Следующий();
	
	ЗапуститьПриложение("cmd ping ya.ru -t",, Истина);
	
	ОрганизацияОбъект = Выборка.Ссылка.ПолучитьОбъект();
	ОрганизацияОбъект.Наименование = Строка(Новый УникальныйИдентификатор);
	ОрганизацияОбъект.Записать();	
	
	ЗафиксироватьТранзакцию();			
	
КонецПроцедуры

&НаКлиенте
Процедура ДедлокНачало(Команда)
	ДедлокНачалоНаСервере();
КонецПроцедуры
Показать


ПС: Для простоты воспроизведения, работал в режиме Автоматических блокировок (ну типо СУБД блокировку в Упр. режиме хер воспроизведешь)
ПС2: не забыть завершить все пинги на сервере =)
22. user612295_death4321 12.05.18 23:39 Сейчас в теме
Поднял до 5 $m
(21)

Держи за то, что запарился) Проблема в моем случае связана с режимом совместимости.

В общем видимо наступил момент, когда пора уходить от блокировок СУБД.

Перевел конфигурацию в управляемый режим блокировок + скуль в режим версионника. Во вторник задеплою, посмотрю результат, надеюсь забуду про блокировки СУБД )
23. Merc 40 13.05.18 06:08 Сейчас в теме
25. check2 379 06.03.23 19:15 Сейчас в теме
(22) Приветствую! А чт обыло с совместимостью? Может у меня тоже это, так как нет полей lka, lkp и прочих. <dbmslocks/> присутствует.
<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
	
	<dbmslocks/>
	<log history="72" location="D:\tech-log-FF">
		<event>
			<eq property="Name" value="DBMSSQL"/>
			<eq property="p:processName" value="UHa"/>
		</event>
		<property name="t:computerName"/>
		<property name="t:connectID"/>
		<property name="Context"/>
		<property name="Sql"/>
		<property name="Sdbl"/>
		<property name="lkaid"/>
		<property name="lka"/>
		<property name="lkp"/>
		<property name="lkpid"/>
		<property name="lksrc"/>
		<property name="tableName"/>
		<property name="Usr"/>
		<property name="dbpid"/>
	</log>
	
</config>
Показать
24. kirinalex 16 11.05.19 12:15 Сейчас в теме
(1) Удалось получить в ТЖ lka, lkp ?
2. spezc 792 02.05.18 04:01 Сейчас в теме
Попробуйте создать тоже самое при помощи этой штатной обработки.
Прикрепленные файлы:
technologicallogsetup.zip
3. user612295_death4321 02.05.18 11:10 Сейчас в теме
Она точно штатная? Шаг влево - шаг вправо у меня ошибки идут))) Сейчас по экспериментирую.
5. spezc 792 02.05.18 12:19 Сейчас в теме
(3) это с ИТС, можешь оттуда скачать)
4. herfis 513 02.05.18 11:29 Сейчас в теме
Я не настоящий сварщик и даже не знаю что это за события lka и lkp.
Но меня смущает, что ты latch_debug переопределяешь. Никогда так не пробовал, но по-идее хотя бы имена должны быть разные все-таки.
Короче, я бы для начала откатал на простом каноническом конфиге с одним набором настроек, а потом уже запиливал разнесение.
6. user612295_death4321 02.05.18 21:32 Сейчас в теме
Собрал очень лайтовый ТЖ:

<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
	<log history="10" location="\\путь\LKA">
		<event>
			<eq property="name" value="dbmssql"/>
			<eq property="lka" value="1"/>
		</event>
		<property name="all"/>
	</log>
</config>
Показать


Все ровно не попадают события, хотя проблемы с отвалом по тайм-ауту на конфликте блокировок субд присутствуют. Либо может быть я неправильно понимаю смысл свойств lka, lkp или все же неправильно их настраиваю ?
7. palsergeich 02.05.18 21:59 Сейчас в теме
таймаут на субд будет в событии EXCP с текстом, содержащим строку "Lock request time out period exceeded"
9. user612295_death4321 02.05.18 22:57 Сейчас в теме
(7)

Я это понимаю, но я хочу поймать контекст виновника + самого виновника. А за ссылку спасибо, интересно.
8. palsergeich 02.05.18 22:07 Сейчас в теме
Это кстати вопрос на профессионала по тех вопросам.
https://docs.google.com/document/d/1BIrKdL_611Sq8B7gpQ5UYtXGJUfEPpdhQju25xI8cnA/­edit
Вопрос 4.2.
10. user612295_death4321 02.05.18 22:57 Сейчас в теме
(8)

Я это понимаю, но я хочу поймать контекст виновника + самого виновника. А за ссылку спасибо, интересно.
11. konstruktiv 03.05.18 16:13 Сейчас в теме
(10) режим совместимости правильный, как раз с него начинают писаться такие события. Настройка странная, для блокировок достаточно такой:

<?xml version="1.0" encoding="UTF-8" ?>
- <config xmlns="http://v8.1c.ru/v8/tech-log">
- <log location="D:\Logs" history="48">
- <event>
<eq property="Name" value="TTIMEOUT" />
</event>
- <event>
<eq property="Name" value="TLOCK" />
</event>
- <event>
<eq property="Name" value="TDEADLOCK" />
</event>
<property name="all" />
</log>
</config>

ВАЖНО!!! пишутся события только по УПРАВЛЯЕМЫМ блокировкам, автоматические блокировки в ТЖ не фиксируются, даже если были
12. palsergeich 03.05.18 16:34 Сейчас в теме
(10)
10. Денис Злобин (user612295_death4321) 02.05.18 22:57
(8)

Я это понимаю, но я хочу поймать контекст виновника + самого виновника. А за ссылку спасибо, интересно.

Под рукой нет примера. Могу предложить только следующий вариант: на тестовой базе включаете полную запись логов, воспроизводите проблему. На сколько я помню в EXCP есть номер соединения. По этому номеру соединения ищите предшествующий DBMSSQL.
А виновника в общем то 2 может быть:
Захват ресурсов в разном порядке и эскалация.
(11) Не подойдет такая настройка тж для данной ситуации.
16. user612295_death4321 03.05.18 19:55 Сейчас в теме
(12)
ий вариант: на тестовой базе включаете полную запись логов, воспроизводите проблему. На сколько я помню в EXCP есть номер соединения. По этому номеру соединения ищите предшествующий DBMSSQL.
А виновника в общем то 2 может быть:


Выдернуть информация виновник - жертва в принципе не проблема, анализировав данные самой СУБД (трассировки, xe, различные запросы и хранимые процедуры), меня зацепила возможность мониторить это прямо из технологического журнала с возможностью выдернуть контекст)
19. palsergeich 03.05.18 22:21 Сейчас в теме
(16) Думаю с такими уточнениями вопрос лучше задать не тут, а на партнерском форуме.
13. konstruktiv 03.05.18 17:11 Сейчас в теме
(11) если блокировки управляемые и логи появятся - то легко найти TLOCK, который стал причиной TTIMEOUT. Общедоступной инструкции не нашел(, но есть здесь поиск виновника TDEADLOCK, почти тоже самое. В результате получишь контекст проблемного кода 1С. https://its.1c.ru/db/metod8dev#content:5809:hdoc ближе к концу статьи.
Примеры рабочие, проверенные на практике, настройка шаблонная из штатной обработки настройки ТЖ,
14. konstruktiv 03.05.18 17:58 Сейчас в теме
18. user612295_death4321 03.05.18 19:58 Сейчас в теме
(14) Обрати внимание, что в статье как раз приводятся те свойства которые я описал в своем вопросе.

"DBMSSQL — исполнение операторов SQL СУБД Microsoft SQL Server. Также, ставлю отбор на параметр «lkp» = 1, означающий, что процесс ожидал предоставления блокировки." Чертов lkp не отрабатывает либо я что то неверно понимаю...
17. user612295_death4321 03.05.18 19:57 Сейчас в теме
(13) С управляемыми блокировками все просто )
15. user612295_death4321 03.05.18 19:53 Сейчас в теме
(11) Управляемые блокировки не интересны :) Там действительно все без проблем логируется журналом)
20. tormozit 7230 04.05.18 09:00 Сейчас в теме
На скрине показано, где сбор информации о блокировках СУБД включается в инструменте "Настройка техножурнала (ИР)"
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот