|
Эскалация блокировок | ☑ | ||
---|---|---|---|---|
0
Franchiser
гуру
06.05.19
✎
18:51
|
В двух сеансах выполняется удаление операций: отдельно чистятся регистры с отбором по регистратору, отдельно проставляется пометка на удаление и выполняется импорт.
Операции грузятся в 2х сессиях за разный период. В операциях может быть больше 1000 строк. При этом возникают блокировки. Как устранить проблему с блокировками. |
|||
13
Маша с уралмаша
06.05.19
✎
22:18
|
(12) больше одной записи значит и больше 5 тыщ возможно да? Рукалицо
|
|||
14
palsergeich
06.05.19
✎
22:21
|
(11) когда запрос пытается применить к одному объекту (к таблице или индексу) более 5000 блокировок на уровне записи или страницы. Значение 5000 блокировок взято из документации, но на практике SQL Server иногда продолжает использовать блокировки уровня записи или страниц и при количестве в сотни тысяч таких блокировок. При этом SQL Server никогда не производит эскалацию с уровня записи до уровня страницы, а сразу пытается наложить блокировку на таблицу;
https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms184286(v=sql.105) (13) А что нет? |
|||
15
vde69
06.05.19
✎
22:21
|
(0) ну как-бы при удалении (пометке) штатными средствами помимо объекта и его ТЧ еще есть планы обмена, последовательности, журналы, критерии поиска.... обычно сабж возникает не из-за эсколации а из-за дедлоков на общих таблицах (обычно это последовательности)
с чего Вы решили, что у Вас блокировки именно из-за эскалации блокировок? для начала посмотрите статистику ожидания блокировок..... |
|||
16
palsergeich
06.05.19
✎
22:22
|
(14) ссылка криво вставилась движком форума. Закрывающую скобку тоже надо в адресной строке поставить
|
|||
17
palsergeich
06.05.19
✎
22:22
|
(13) ТТы злой такой? У тебя проблемы в жизни?
|
|||
18
vde69
06.05.19
✎
22:23
|
||||
19
palsergeich
06.05.19
✎
22:26
|
(15) Я буквально 2 недели назад столкнулся с похожей проблемой:
Много доков с ТЧ около 1000 записей. И зараза постоянные эскалации на РБ Хозрасчетный. Именно эскалации. Не планы обмена, не последовательности, не ожидания. |
|||
20
vde69
06.05.19
✎
22:28
|
(19) ну хозрасчетный то-же слабое место из-за второй таблицы с субконто, но автор написал, что движения он чистит отдельно по регистратору...
|
|||
21
palsergeich
06.05.19
✎
22:29
|
(18) Просто параллельно проводишь в 3 потока приходные накладные, и пошла красота.
С расходными такой беды нет. |
|||
22
palsergeich
06.05.19
✎
22:33
|
(20) Эскалация на основной таблице, не на с субконто.
|
|||
23
Маша с уралмаша
06.05.19
✎
22:33
|
(21) просто приход надо тоже расходными делать, вид операции приход добавить, и проблем не будет
|
|||
24
Franchiser
гуру
07.05.19
✎
01:02
|
Записей в операциях может быть у меня и 1000, и 5000, максимум 500000.
Уровень изоляции на продуктивном сервере read comitted, на тестовом snapshot read comitted.Ошибка наблюдается на обоих. |
|||
25
Franchiser
гуру
07.05.19
✎
01:27
|
(20) в одной сессии может записываться операция на 100000 и больше, в другой сессии чистится движения операции и возникает ошибка таймаута.
|
|||
26
Franchiser
гуру
07.05.19
✎
09:46
|
При выполнении удаления движений по регистратору ставятся какие либо блокировки? И чему равно количество блокировок, количеству удаляемых строк?
|
|||
27
Cyberhawk
07.05.19
✎
09:56
|
Может ты еще читаешь набор записей перед тем, как удалять?
|
|||
28
Franchiser
гуру
07.05.19
✎
10:57
|
нет, не читаю: в одной сессии создаю набор записей по регистратору и записываю, в другой записываю пустые наборы по другим регистраторам
|
|||
29
Cyberhawk
07.05.19
✎
11:28
|
Отключить итоги у регистра может помочь
|
|||
30
H A D G E H O G s
07.05.19
✎
11:54
|
Текст ошибки то какой?
|
|||
31
Cyberhawk
07.05.19
✎
11:59
|
(30) Судя по (25) таймаут на упр.
|
|||
32
Glup0sti
07.05.19
✎
13:36
|
(0) 2 подхода:
либо ты делишь документы так, чтобы в двух сессиях не пересекались измерения (для РБ + счет) в удаляемых движениях либо (27) или его другой вариант отключение текущих итогов, период рассчитанных итогов меньше на месяц, чем периоды изменяемых движений (Смотря на какой таблице была эскалация может и не помочь, но откуда ты взял что у тебя эскалация? доказательства, что она происходит есть?) |
|||
33
Franchiser
гуру
07.05.19
✎
14:18
|
(30) Конфликт блокировок при выполнении транзакции: превышено максимальное время ожидания предоставления блокировки
|
|||
34
Franchiser
гуру
07.05.19
✎
14:19
|
(32) у меня движения по регистру накопления
|
|||
35
Franchiser
гуру
07.05.19
✎
14:21
|
(32) пока нет.
Не получается настроить ТЖ. Не работает фильтрация на базу и каталоги создаются с непонятными числами: не соответсьвуют ни pid процессов , ни номерам соединений |
|||
36
Franchiser
гуру
07.05.19
✎
14:54
|
При включении ТЖ получаются такие каталоги:
1cv8c_5900 1cv8c_11796 1cv8s_18316 mmc_3308 1cv8s_13096 1cv8_17588 и т.д. Что означают числа? |
|||
37
Franchiser
гуру
07.05.19
✎
14:58
|
Везде пишут что должны быть такие катлоги:
ragent_###, rmngr_####, rphost_### |
|||
38
Маша с уралмаша
07.05.19
✎
14:59
|
М-да..
|
|||
39
Cyberhawk
07.05.19
✎
15:21
|
Так ты на клиенте включит ТЖ
|
|||
40
Cyberhawk
07.05.19
✎
15:21
|
*включил
|
|||
41
Cyberhawk
07.05.19
✎
15:21
|
А ты там кем?
|
|||
42
rphosts
07.05.19
✎
15:24
|
(5) не хами!
|
|||
43
rphosts
07.05.19
✎
15:25
|
(36) рп?
|
|||
44
Franchiser
гуру
07.05.19
✎
16:44
|
(39) при некоторых настройках события пишутся, но не TLOCK
|
|||
45
Franchiser
гуру
07.05.19
✎
16:44
|
(43) что рп?
|
|||
46
Franchiser
гуру
07.05.19
✎
16:50
|
(40) если три кластера серверов то с кем будет работать?
|
|||
47
Cyberhawk
07.05.19
✎
19:22
|
Сколько кластеров не имеет значения, ведь инфобаза всегда зарегистрирована должна быть только в одном кластере. А если у тебя это не так, то ты ССЗБ. А если ты кластерами называешь рабочие серверы кластера, то вдвойне :)
|
|||
48
vde69
07.05.19
✎
22:04
|
(46) кластер 1с ВСЕГДА имеет ОДИН мастер сервер, именно он разруливает 1с-шные блокировки на весь кластер (на все сервера кластера и все процессы их),
все-же я пока не услышал, ни одного подтверждения, что у тебя именно проблема эскалации попробуй все-же (18) (25) 100000 записей в ОДНОЙ транзакции? учти, что эта транзакция идет совсем не быстро (26) при записи пустого набора в регистр ставится блокировка по отбору, то есть если для регистров с регистратором получить лишнюю блокировку тяжело, там отбор только по регистратору, а вот с независимыми регистрами вполне реально получить блокировку на весь регистр целиком. В дополнение тут уже говорили про пересчет итогов, при больших транзакциях однозначно итоги нужно отключать и потом их пересчитывать отдельно |
|||
49
Franchiser
гуру
07.05.19
✎
22:17
|
(47) настроил на сервере под пользователем 1С. Теперь пишет в ТЖ.
|
|||
50
Franchiser
гуру
07.05.19
✎
22:18
|
События tlock нет в журнале
|
|||
51
Franchiser
гуру
07.05.19
✎
22:20
|
В ТЖ попадаются такие строки:
38:06.577005-161148005,CONN,1,process=rphost,p:processName=bd,OSThread=2412,ClientID=293,Txt=Outgoing connection closed |
|||
52
Franchiser
гуру
07.05.19
✎
22:22
|
Содержание файл настройки:
<?xml version="1.0" encoding="UTF-8"?> <config xmlns="http://v8.1c.ru/v8/tech-log"> <log location="C:\Users\USR1CV8\AppData\Local\Temp\log_tj_823aefe5-8375-4dfa-ad58-7542f1189c7c" history="1"> <event> <ne property="name" value=""/> <eq property="p:processName" value="bd"/> </event> <property name="all"/> </log> </config> |
|||
53
Franchiser
гуру
07.05.19
✎
22:26
|
(48) запрос в (18) что должно вернуть, какую то таблицу?
|
|||
54
vde69
07.05.19
✎
22:29
|
(53) коды причин ожидания блокировок,
там сразу будет видно это дедлок или что-то еще |
|||
55
Franchiser
гуру
07.05.19
✎
22:33
|
(54) я моделирую ситуацию на тестовой базе: запускаю в 2х сессиях обработку. В какой момент нужно выполнять этот запрос? я не знаю когда возникнут блокировки.
|
|||
56
vde69
07.05.19
✎
22:39
|
(55) когда запускаешь, только в твоем случае параметры подкрути, а то 300 минут это для тебя долго...
поставь минут 20, например так EXEC track_waitstats 20, 1 и сразу после запуска запускай свои обработки на нескольких сеасах |
|||
57
Franchiser
гуру
07.05.19
✎
22:41
|
(56) Завтра попробую, спасибо
|
|||
58
Franchiser
гуру
07.05.19
✎
22:44
|
(56) в этом скрипте нельзя поставить фильтр на базу?
|
|||
59
vde69
07.05.19
✎
22:46
|
(58) я не знаю, скрипт использует штатный сбор статистики а есть-ли там возможность фильтрануть по базе - читать надо, я никогда не заморачивался
|
|||
60
Feanor
07.05.19
✎
23:12
|
Занятно, у ТС конфликт на управляемых блокировках, но ему упорно продают идею анализировать ожидания на СУБД, а также то, что это может быть дэдлок на СУБД :)
|
|||
61
Franchiser
гуру
07.05.19
✎
23:24
|
(60) что вы предлагаете анализировать?
|
|||
62
vde69
07.05.19
✎
23:26
|
(60) получить конфликт на управляемых блокировках в автоматическом режиме может быть 2х типов
1. ожидание освобождения при очень длительной транзакции (напоминаем типовой таймаут 10 минут), на объемах автора транзакции должна быть 1..2 минуты. 2. дедлок, да на управляемых его получить очень сложно, но учитывая все-же довольно длительную транзакцию 1...2 мин, я предполагаю, что блокировка возникает в авто режиме на небольшое время с момента записи и до фиксации транзакции, то есть это наверно секунд 15 при фиксированым порядком таблиц для блокировки, но вот если в авто режим мы влезаем грязными ручками и явным образом меняем порядок блокировки таблиц для разных типов документов - то тут и будет дедлок... |
|||
63
Feanor
07.05.19
✎
23:40
|
(61) события TLOCK и TTIMEOUT в технологическом журнале
|
|||
64
Feanor
07.05.19
✎
23:44
|
(62) откуда инфа, что у автора автоматический режим управления блокировками?
в автоматическом режиме конфликта на управляемых блокировках не может быть Если случился конфликт на управляемых блокировках, то до блокировок на уровне СУБД дело не дошло, их не нужно анализировать от слова "совсем" |
|||
65
Feanor
07.05.19
✎
23:45
|
+(64) и еще момент, дэдлок или нет - понятно по тексту ошибки, у автора явный конфликт блокировок (не дэдлок)
|
|||
66
Franchiser
гуру
08.05.19
✎
00:22
|
у меня моделируется ситуация следующая:
1. Записывается операция по оборотному регистру накопления объемом примерно 500000 строк в одной сессии 2. В другой сессии улаляются движения и формируются операции примерно по 10-20 тыс строк в опер. Т.к. регистр накопления оборотный то отключать итоги не имеет смысла. Пока не рассматриваем вариант уменьшение строк в операциях. Может быть конечно я неправильно записываю операции: 1. Записваю доеумент 2. Создаю набор 3. Ставлю отбор на регистратор 4. Заполняю 5. Записываю. Возможно при создании набора нужно ставить управляемую блокировку в транзакции на организацию и период? |
|||
67
Franchiser
гуру
08.05.19
✎
00:27
|
(63) нет этих событий в ТЖ
|
|||
68
rphosts
08.05.19
✎
02:50
|
(48)в кластере 8.3 может быть более 1 центрального сервера.
|
|||
69
rphosts
08.05.19
✎
03:06
|
(66) операция №1 у вас выполняет установку блокировки на 500000 строк таблицы оборотного РН и по столько-же строк на каждый из регистров и на всякие доп. таблицы (итоги оборотов за каждый месяц и т.п.). Вполне резонно что на большом наборе записей сервер СУБД решает что экономичнее и быстрее повысить гранулярность блокировки до таблицы.
Как писали флаг 1224 отключит эскалацию по числу записей, а 1211 по числу записей+памяти, но 1211 может криво отрабатывать. >Возможно при создании набора нужно ставить управляемую блокировку в транзакции на организацию и период? управляемые блокировки ставить нужно!!! примеры: http://catalog.mista.ru/public/144750/ >Пока не рассматриваем вариант уменьшение строк в операциях. не зная все подробности нельзя точно сказать правильно ли вы делаете. Как вариант делать допроведение документов ночью. Не подходит? |
|||
70
Маша с уралмаша
08.05.19
✎
06:53
|
(62) ну и бред
|
|||
71
Feanor
08.05.19
✎
08:24
|
(67) есть, просто у тебя криво ТЖ настроен
|
|||
72
Feanor
08.05.19
✎
08:30
|
(69) да нет там блокировок на СУБД, см (33)
|
|||
73
Franchiser
гуру
08.05.19
✎
09:41
|
(69) не нашел по ссылке способа как поставить блокировку на Период (месяц) это вообще возможно?
|
|||
74
Franchiser
гуру
08.05.19
✎
09:42
|
(71) как настроить: не ставить фильтр на базу?
|
|||
75
Feanor
08.05.19
✎
09:43
|
(73) для чего тебе блокировка? Ты читаешь остатки перед формированием движений и контролируешь их?
|
|||
76
Franchiser
гуру
08.05.19
✎
09:44
|
"делать допроведение документов ночью"
сложилас ситуация , что обработку впервые запусттли в 2 сессии, вообще всегда в одну сессию грузили. Поэтому такого больше не будет. |
|||
77
Feanor
08.05.19
✎
09:45
|
(74) да, попробуй не ставить фильтр на базу
вот кусок рабочих настроек для разбора проблем с упр. блокировками: <log location="E:\LOGS\TLOCK" history="8"> <event> <eq property="Name" value="TLOCK"/> </event> <event> <eq property="Name" value="TTIMEOUT"/> </event> <event> <eq property="Name" value="TDEADLOCK"/> </event> <property name="all"/> </log> |
|||
78
Franchiser
гуру
08.05.19
✎
09:47
|
(75) нет не читаю. Блокировка для того чтобы гранулярность была меньше чем сейчас, чтобы 1я сессия могла создать движения в оборотном регистре по своей оргагизации +периоду, а во второй сессии по своей паре и они не мешали друг другу.
|
|||
79
Feanor
08.05.19
✎
09:47
|
+(75) вдумайся немного, у тебя конфликт блокировок и решать эту проблему ты пытаешься с помощью наложения дополнительных блокировок. Кажется это немного бессмысленно :)
|
|||
80
Franchiser
гуру
08.05.19
✎
09:50
|
ну так из за чего конфликт, у меня пишутся разные наборы по разным организациям, значит программа сама неоптимально ставит блокировки
|
|||
81
Franchiser
гуру
08.05.19
✎
09:51
|
если я явно не указываю упр. блокировки, значит блокировки наложит какие то другие субд и 1с?
|
|||
82
Feanor
08.05.19
✎
09:56
|
(78) тебе это ничем не поможет.
если я правильно понял, то ты пишешь в один регистр слишком много (500к) записей в одной транзакции, из-за этого возникает эскалация на упр. блокировках (блокируется весь регистр, так работает платформа), что не дает другим транзакциям писать в этот регистр до завершения твоей огромной транзакции. Поэтому выход для тебя - разделить запись в регистр на порции, не превышающие 100к (если у тебя 8.3, для 8.2 и того меньше) записей для того, чтобы не возникала эскалация. При этом нужно будет как-то контролировать целостность записи всего огромного набора записей, но это кажется решаемо |
|||
83
Feanor
08.05.19
✎
09:58
|
(81) ты запор пытаешься лечить закрепляющими средствами, а это плохой путь :)
если ты явно не накладываешь блокировки, то СУБД и платформа сами наложат необходимые им блокировки (независимо от тебя, как бы ты ни старался) |
|||
84
Franchiser
гуру
08.05.19
✎
10:00
|
Ну уровне субд я уже отключил эскалацию ылагами трассировки. Кроме этого уровень изоляции snaoshot вообще вряд ли приводит к блокировкам в субд. По крайней мере обработка по просмотру блокировок в sql на этой базе их вообще не покаЗывает.
Осталось увидеть блокировки 1с в ТЖ. |
|||
85
Franchiser
гуру
08.05.19
✎
10:03
|
(83) я не собираюсь ничего лечить, просто хочу видеть блокировки в ТЖ как подтверждение того что это из-за записи большого количества строк в регистр накопления по регистратору
|
|||
86
Franchiser
гуру
08.05.19
✎
10:07
|
Интересно, будет ли разница если записывать операции по-другому минуя набор записей:
1. Получать объект 2. Записывать движения 3. записывать объект |
|||
87
Cyberhawk
08.05.19
✎
11:00
|
Давно бы запустил хотя бы обработку Бурмистрова по отображению блокировок, либо через какие-нибудь ИР настроил и собрал ТЖ.
А этот ручной онанизм с настройкой ТЖ и разглядыванием текстовых файликов в каталогах разве что на экзамене у Морозова пригодится ) |
|||
88
ptiz
08.05.19
✎
11:07
|
(79) " решать эту проблему ты пытаешься с помощью наложения дополнительных блокировок" - это имеет смысл при борьбе с дедлоками. Тогда разные транзакции культурно будут ждать друг друга в очереди.
|
|||
89
ptiz
08.05.19
✎
11:08
|
(86) Покажи какие именно упр.блокировки накладываешь и перечисли отдельно все измерения регистров, которые записываешь.
|
|||
90
Franchiser
гуру
08.05.19
✎
11:16
|
(87) именно ее и запускал, в тестовой базе вообще ничего не показывает
|
|||
91
Franchiser
гуру
08.05.19
✎
11:17
|
(89) сейчас никакие упр. блокировки не накладываю
|
|||
92
palsergeich
08.05.19
✎
11:18
|
(91) это ты так думаешь.
Это за тебя щедро платформа делает. Смотри пространства имен события Tlock |
|||
93
Franchiser
гуру
08.05.19
✎
11:20
|
(92) посмотрю когда получу tlock в тж
|
|||
94
Cyberhawk
08.05.19
✎
11:25
|
(90) "в тестовой базе вообще ничего не показывает" // Не настроил значит как надо, не читал требований
|
|||
95
Franchiser
гуру
08.05.19
✎
11:27
|
в рабочей показывает в тестлвлй нет: не считая списка пользователей.
Уровни изоляций в базах разные |
|||
96
Feanor
08.05.19
✎
11:28
|
(90) очевидно же, что она показывает блокировки на СУБД, а у тебя таймаут на управляемых :)
|
|||
97
Franchiser
гуру
08.05.19
✎
11:29
|
(96) она показывает и блокировки 1с по данным ТЖ, там есть отдельный флаг
|
|||
98
Franchiser
гуру
08.05.19
✎
11:31
|
вообще тот файл настроек тж который я редактировал и создала на сервере обработка Бурмистрова
|
|||
99
Cyberhawk
08.05.19
✎
11:32
|
(96) Не, та показывает и упр.
|
|||
100
Feanor
08.05.19
✎
11:54
|
(98) включи руками полный ТЖ, проверь, что есть нужные события
|
|||
101
Franchiser
гуру
08.05.19
✎
13:08
|
(100) В рабочем кластере есть и рабочие и тестовые базы, полный журнал включать нет возможности
|
|||
102
Cyberhawk
08.05.19
✎
13:08
|
Ты там фикси что ли?
|
|||
103
ptiz
08.05.19
✎
13:12
|
(91) Поэтому и будут вылезать дедлоки.
|
|||
104
ptiz
08.05.19
✎
13:15
|
(91) На всякий случай тогда спрошу - "автоматическое удаление движений" не стоит в документах?
|
|||
105
Franchiser
гуру
08.05.19
✎
13:24
|
(102) да, саообучаюсь
|
|||
106
Franchiser
гуру
08.05.19
✎
13:24
|
(104) документ операция, какое удаление движений
|
|||
107
Franchiser
гуру
08.05.19
✎
13:26
|
(100) ну проверил по рабочим базам пишутся события TLOCK. Но нет ни одной папки с PID процессов балансирующего сервера. Должны ли они складывать в этот же каталог главного сервера кластера или нужно настраивать на обоих серверах?
|
|||
108
Franchiser
гуру
08.05.19
✎
13:28
|
короче надоело разбираться, всем спасибо)
|
|||
109
Franchiser
гуру
08.05.19
✎
13:35
|
(103) они и так будут вылезать, упр. блокировку все равно не поставить на период
|
|||
110
rphosts
08.05.19
✎
14:01
|
(85)если есть твердая уверенность что это не эскалация блокировок СУБД, то собирай события TLOCK
|
|||
111
rphosts
08.05.19
✎
14:05
|
(102) это не недостаток.
|
|||
112
Cyberhawk
08.05.19
✎
14:12
|
(111) ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |