Дедлоки, PostgreSQL и ЦУП #780568


#0 by Fuas4
Господа, такая ситуация: есть УТ 10.3, в которой работает 10-15 пользователей. Когда файловая база уперлась в размер, перешли на PostgreSQL. На нем? при проведении заказа покупателя? стали периодически выскакивать дедлоки. Поставил ЦУП, посмотрел ошибки. Все ошибки в выполнении запросов в обработках. Посмотрел, ни одна из них не записывает документы, т.е. по идее ничего блокировать не должна. В связи с чем вопрос: поможет ли ускорение запросов в борьбе с дедлоками или надо смириться и перейти на MS SQL?
#1 by Cyberhawk
Пару статей с ТВКВ по тюнингу Постгри применил уже?
#2 by Fuas4
Админ постгрю ставил и админит. Если дадите ссылку на статьи - дам ему почитать.
#3 by Cyberhawk
И вообще все, что выходит в поиске по ИТС по слову "postgresql"
#4 by Fuas4
спасибо, передам ссылки. А по сабжу что скажете? Там есть запрос, который выполняется 2400 секунд, но выполняется фоном и по факту никому не мешает. Может он на дедлоки как-то вилять?
#5 by Cyberhawk
"по сабжу что скажете?" // Ничего, мне отсюда не видно, что там за дедлоки
#6 by ansh15
#7 by Fuas4
классические :)
#8 by Fuas4
спасибо, увеличить время на блокировки попробую
#9 by Фрэнки
по сабжу можно сказать, что с момента выхода УТ 10.3 много воды уже утекло. И платформа обновлялась и постгри обновлялся и типовая 10.3 тоже обновлялась - насколько там кривой запрос или насколько он криво обрабатывается на твоей субд сейчас?
#10 by Fuas4
платформа 8.3.7, конфа достаточно старая (jn 30/10/2014u) и сильно переписанная, ПГ самый свежий. Запросы достаточно кривые (судя по времени выполнениия), но они просто получают данные и потом их в одном случае сохраняют в эксель, Во втором отправляютна сайт, т.е. заказ покупателя, по которому лезут дедлоки не задевают совсем
#11 by Cyberhawk
Ставлю на то, что лочится таблица регистрации изменений
#12 by Cyberhawk
В логах постгри посмотри, какая таблица во время дедлока блочится. Будет что-то типа LOCK _AccumReg456 IN APPLICATION EXCLUSIVE MODE
#13 by youalex
see server log
#14 by Fuas4
Посмотрел лог, блочится много чего, но в основном основная таблица заказов покупателя (Document134)
#15 by Фрэнки
ну раз пошла такая пьянка - режь последний огурец! Если не трудно, можешь показать текст запроса, который документ блочит? Просто интересно некоторые свои догадки проверить.
#16 by Necessitudo
А на управляемые блокировки же уже перешли?
#17 by Фрэнки
вряд ли. поэтому я и выпрашиваю текст запроса.
#18 by Fuas4
а где его найти? нет, конечно
#19 by Fuas4
Не переходил ни разу на управляемые блокировки, если просто переключить режим, полагаю, будет хаос
#20 by Necessitudo
Ну главное впихнуть немного кода в места где важен контроль остатков.
#21 by Fuas4
читал по этому поовду мануалы. Я так понял, там надо все регистры заказа покупателя переводить в управляемый режим и потмо во всех остальных документах-регистраторах этих регистров тоже переходить на управляемый режим. Т.е. я всю конфу в итоге переведу на управляемые блокировки. Это тоже вариант, но пока ищу пути по проще
#22 by Fragster
добавить в запросы "для изменения"
#23 by Fuas4
при проведении заказа покупателя я запросом не обращаюсь к таблице заказов, т.е. нет запроса, куда можно вписать "Для изменения". Если я правильно вас понял
#24 by Фрэнки
ну сам же пишешь в 0, что обработки посмотрел, а все они только чего-то читают, но не пишут. Вот я и думаю, что раз ты посмотрел, то там же видно по запросам должно быть, что попытки заблокирывать считываемые таблицы есть или их там просто нет. И тогда блочить будут вовсе не эти обработки, а зря на них думаешь
#25 by Фрэнки
может быть под словом "в обработках" у тебя подразумеваются предопределенные процедуры ОбработкаПроведения или еще чего-то подобное. Тем более, что речь о наличии в базе каких-то доработок тоже была
#26 by Fuas4
нет, обработки классические, из ветки "Обработки". Самый долгий запрос выглядит вот так:
#27 by Fuas4
Результат анализа ЦУПа: В первый запрос из скриншота
#28 by Фрэнки
извиняюсь, какой-то бред. Обращения к виртуальным таблицам срезов последних и остатков мало того, что долго выполняется на этом сервере, но еще и блочит регистраторы. Так еще окажется, что Заказы покупателя просто такой документ, который используют чаще всего, а не потому, что он чем-то хуже остальных, которые используются просто реже.
#29 by Fuas4
так может не запросы блочат таблицы не запросы, а просто заказы часто проводят и они сами друг друга блочат? PG же блокирует всю таблицу
#30 by xafavute
постгре от файловой мало чем отличается по блокировкам
#31 by Fuas4
в файловой не было проблем с блокировками
#32 by xafavute
тогда размер просто меньше был
#33 by xafavute
Режим совместимости какой стоит?
#34 by xafavute
Это не блокировки, а длительные запросы
#35 by xafavute
То бишь ожидания на блокировках, а не сами блокировки. Вне транзакции ничего не блокируется
#36 by Fuas4
8.2.13 вот я в и спрашивал, поможет ли исправление в борьбе с дедлоками
#37 by xafavute
перейди хотя бы на 8.2.14 там константы по другому хранятся
#38 by xafavute
вообще пока ниодного дедлока ты не предоставил здесь. делдлок - это 2 блокировки минимум
#39 by Фрэнки
в лог есть. видны там блокировки. Нужно только сопоставить с журналом другим и увидеть, что это один пользователь ожидает освобождения таблицы от другого процесса
#40 by Fuas4
с каким журналом это сопоставить?
#41 by Fuas4
перейду
#42 by Fuas4
Открыл щас типовую УТ 10.3, самую новую. там тоже 8.2.13. М.б. не стоит переходить на 8.2.14? Разрабы. поди,не зря остались на текущей совместимости
#43 by xafavute
ну не хочешь не переходи.
#44 by Фрэнки
ну допустим в обычном журнале лог работы пользователей тоже есть сообщения, что есть отказы в записях документов и успешные записи. С номерами сеансов и процессов. Может там явно будет видно, что это другие пользователи с таким же документами, а поскольку совместимость старая и упр.блокировок нет, то будет ошибка. И в тех настройках, о которых писал выше, там есть настройки на увеличение времени ожидания блокировок, чтоб не выдавало ошибки, а подвисало в ожидании
#45 by Фрэнки
и пост тоже - увеличить ожидание
#46 by xafavute
На дедлоки это не распространяется
#47 by Fuas4
увеличил ожидание с 20 секунд до 40, не помогло. Инфу с ИТСа по настройкам скинул админу, читает пока. А я попутно ищу, что на стороне 1с могу сделать
#48 by Fuas4
я к тому, что не повалится ли что-нибудь после перехода? ИЛи разрабы тупо забыли поменять совместимостЬ?
#49 by xafavute
может конечно
#50 by xafavute
в 8.2.14 нельзя сериализовть половину данных, что в 8.2.13 можно было
#51 by dmrjan
Там есть параметр deadlock_timeout = 1s попробуй поменять на 2s Больше 2 секунд не не ставь.
#52 by Fuas4
тогда я посижу на текущей версии совместимости :) Ок, попробую, спасибо
#53 by Fuas4
deadlock_timeout отключен сейчас
#54 by dmrjan
Он не отключен, просто если параметр закомментирован, то по-умолчанию действует указанный параметр, т.е. 1s.
#55 by dmrjan
И еще - ставьте актуальную версию PostgreSQL отсюда: PostgreSQL 9.4.9 для 8.3.7 Если ставили под Windows, то по-умолчанию при установке предлагается оптимизировать конфиг автоматически. Ну а далее по-необходимости уже тюнить ручками.
#56 by dmrjan
По поводу фонового запроса. Для PostgreSQL является очень нехорошим запрос, который вместо того, чтобы один раз сделать запрос, в момент его выполнения рассчитать нужные параметры и только после после этого произвести запись, начинает постоянно обращаться к одной и той же таблице и методом перебора производить расчеты. И если MSSQL это издевательство более-менее переносит (хотя на производительности это также сказывается крайне негативно, т.к. у MSSQL возникают блокировки на чтение), то для PostgreSQL это недопустимо.
#57 by Fuas4
понял, поставил 2s. PostgreSQL как раз по этой ссылке и качали. учту и поищу такие моменты, спасибо!
#58 by xafavute
Дедлоск не решается таймаутом
#59 by dmrjan
с 1С 1 секунды явно недостаточно, практикой проверено.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С