Имя: Пароль:
1C
 
postgresql-9.4.2-1.1C_x64 + 1с 8.3.9.2033 + УТ 11.1.2.27 = блокировки
,
0 1с_ник
 
21.12.16
07:33
Было:
postgresql-9.3.4.1-1C_x64
1с 8.3.8.1652, сервер 1с х32
Конф. УТ 11.1.2.27

Обновил 1с платформу, сервер 1с и postgresql до последних релизов:

postgresql-9.4.2-1.1C_x64
1с 8.3.9.2033, сервер 1с х32
Конф. УТ 11.1.2.27

Стало вылазить блокировка таблиц при попытки сделать синхронизацию РИБ. Как при выгрузки данных так и при загрузки. Или если открыть обработкой план обмена и выбрать узел, то та же ошибка.

Ошибка:
Ошибка чтения файла сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(161)}: Ошибка при вызове метода контекста (ПрочитатьИзменения): Конфликт блокировок при выполнении транзакции:
Превышено максимальное время ожидания предоставления блокировки

Перезагрузки, монопольный режим, отключение регл. заданий, очищение сеансов на сервере 1с, рестарты служб агента сервера 1с и постгре не помогли.

В обычной работе юзеров (около 10 человек) проблем нету. Все открывается, записывается, проводится.
1 VladZ
 
21.12.16
07:35
postgresql нужно уметь "готовить". Поэтому делаем так: сносим его нафиг и ставим MS SQL.
2 1с_ник
 
21.12.16
07:38
(1) Оно было уже "приготовлено" и работало. Проблема возникла после обновления. После апдейта файл postgresql.conf отредактирован так же как и в старом релизе.
3 DGorgoN
 
21.12.16
07:44
Сервер 1с 32 может на 64 заменить?
4 1с_ник
 
21.12.16
07:44
(3) лицензия
5 1с_ник
 
21.12.16
07:46
останавливается на строке
ТаблицаДанных = Запрос.Выполнить().Выгрузить()

но не сразу, много данных получает, и на некоторых справочниках стопорится.

Функция ПолучитьКоличествоЗарегистрированныхОбъектовДляМетаданногоПоУзлу(МетаданныеОбъекта)
    
    Запрос = Новый Запрос();
    
    ИмяТаблицыДляПоискаЗарегистрированных = ПолучитьПоМетаданномуНазвание(МетаданныеОбъекта);
    
    Если ПустаяСтрока(ИмяТаблицыДляПоискаЗарегистрированных) Тогда
        Возврат 0;
    КонецЕсли;
    
    ИмяТаблицыДляПоискаЗарегистрированных = ИмяТаблицыДляПоискаЗарегистрированных + "." + МетаданныеОбъекта.Имя + ".Изменения";
        
    Запрос.Текст = "ВЫБРАТЬ Количество(*) КАК Количество
       |ИЗ
       |    " + ИмяТаблицыДляПоискаЗарегистрированных + " КАК РегистрацияИзменений
       |ГДЕ
       |РегистрацияИзменений.Узел = &Узел";
                  
    Запрос.УстановитьПараметр("Узел", УзелОбмена);
    
    ТаблицаДанных = Запрос.Выполнить().Выгрузить();
    
    Если ТаблицаДанных.Количество() = 0 Тогда
        Возврат 0;
    Иначе        
        Возврат ТаблицаДанных[0].Количество;        
    КонецЕсли;
    
КонецФункции
6 1с_ник
 
21.12.16
07:48
3 раза запускал и глядел отладчик,
Два раза стопорился на справочнике НаборыУпаковок, один раз на справочнике РолиПартнеров

Но если открыть потом эти справочники вручную - проблем нет, записать - тоже ни каких тебе блокировок
7 1с_ник
 
21.12.16
07:50
(5)эта функция происходит в обработке РегистрацияИзмененийДляОбмена8_2.

Выбираешь план обмена, узел , дальше немного соображает и вылазит ошибка блокировок
8 1с_ник
 
21.12.16
07:53
получается не могут быть прочитаны все объекты узла
9 VladZ
 
21.12.16
07:54
вот же все расписано и даже комменты есть: http://catalog.mista.ru/public/325482/
10 VladZ
 
21.12.16
07:55
упс..  не та ссылка:  http://catalog.mista.ru/public/325482/
11 VladZ
 
21.12.16
07:55
Что за...  ???  __http://catalog.mista.ru/public/325482/__
12 VladZ
 
21.12.16
07:56
на инфостарте ищи.  325482
13 1с_ник
 
21.12.16
07:59
статья о конфигурировании PostgreSQL. Там много чего написано. Но меня интересует решение проблемы блокировки
14 1с_ник
 
21.12.16
08:01
я её читал ранее и пользовался при начальном конфигурировании
15 Фрэнки
 
21.12.16
09:08
(14) единственно, что приходит в голову, что зря обновил все одновременно и теперь не знаешь в чем собака зарылась

Я подозреваю, что проблема в связке именно последних релизов всего сразу между собой.

Конф УТ не менял. Значит платформа забрасывает состав блокировок как-то иначе.
Что еще можно попробовать... Не смотрел насколько много релизов было после твоей УТ 11 и не смотрел на ее требования к платформе. Поэтому (в порядке, на авось) попробую на режим совместимости в конфигурации глянуть.

А ось на сервере какая?

Для тестирования старого скл поставить уже не можешь, чтоб другое сочетание взять и сделать не все релизы самыми последними?
16 1с_ник
 
21.12.16
09:14
Windows server 2008 R2

Вечером буду пробовать понизить релиз платформы 1с и сервера 1с
17 1с_ник
 
21.12.16
09:14
(16) Windows server 2008 R2  х64
18 Фрэнки
 
21.12.16
09:20
(17) может быть не сразу одновременно понизить, а что-то из двух. Но может быть в релизе платформы.

Было какое-то сообщение недавно, что для какой-то из конфигураций (не уверен, возможно, что для Розницы) выскочила рекомендация самые последние релизы платформы не ставить.
19 VladZ
 
21.12.16
09:50
Можно, в качестве тестирования, попробовать развернуть базу на MS SQL. Если проблем не будет - значит дело в postgresql.

Еще вариант, раз пошла такая пьянка (Обновил 1с платформу, сервер 1с и postgresql) - сразу перейти на 11.2.  11.1 как никак уже "на ладан дышит".
20 1с_ник
 
21.12.16
10:22
(19) база не типовая, переписана много.
21 FIXXXL
 
21.12.16
10:39
(5) это самописный код? нафига Выгрузить(), если по факту нужна первая одна строка?
22 FIXXXL
 
21.12.16
10:40
(21) попробуй
    ТаблицаДанных = Запрос.Выполнить().Выбрать();
    
    Если ТаблицаДанных.Следующий() Тогда
        Возврат ТаблицаДанных.Количество;
    Иначе        
        Возврат 0;        
    КонецЕсли;
23 1с_ник
 
21.12.16
10:43
(22)
можно попробовать, но...

(21)
типовой - одна из старых версий - обработка взята из конфигурации КД2.

Там суть в том что запрос не отрабатывает. При синхронизации там другой код идёт, но он тоже обращается к объектам плана обмена узла. И получает блокировку
24 1с_ник
 
21.12.16
10:48
(22) нет блокировка так же выскакивает.
проблема в Запрос.Выполнить()
25 arsik
 
гуру
21.12.16
10:56
(0) Попробуй время на блокировку увеличить - Ну допустум до 360 секунд
26 novichok79
 
21.12.16
11:01
(24) а что в технологическом журнале?
27 1с_ник
 
21.12.16
11:07
(26)  не работал с ним раньше, настраивать надо его, нет времени сейчас обучаться. Да и мало надежд на него.

(25) увеличивал до 40, ради интереса попробую побольше поставить, посмотрим
28 1с_ник
 
21.12.16
11:07
(26) хотя это правильный путь
29 novichok79
 
21.12.16
11:10
(28) сам недавно веду УТ 11 на постгри, помог рестарт postgresql и вакуум с реиндексом на выходных.
30 1с_ник
 
21.12.16
11:11
(29) в смысле у тебя были схожие симптомы?
31 АнтонБ
 
21.12.16
11:11
(28) Поставь вообще много для теста время на блокировку 600 или 10000 даже.
Проверить как отреагирует.
Может быть запросы в транзакции суммарно просто не успевают и их откатывают.
В любом случае это ничего не сломает и можно вернуть в любое время.
Я так тестировал на sql на нагруженных базах.
Это запросы тупят по времени.
Или реально блокировка.
Потому что борьба разная.
Если тупят по времени то надо смотреть длинные запросы.
Если блокировка то надо смотреть операции на запись.
И сдвигать их в конец транзакции.
32 1с_ник
 
21.12.16
11:12
(29) Вакуум и реиндекс делал, не помогло
33 novichok79
 
21.12.16
11:16
(30) тогда остается технологический журнал смотреть. да, была проблема при проведении заказов клиентов, регламентное задание, которое формирует задание на распределение расчетов с клиентами блокировало константу номерзаданиянараспределение (или как-то так), и та же константа блокировалась в момент проведения заказа клиента в модуле набора записей. блокировки устанавливаются управляемые, но все равно 1С выдает ошибку про "Конфликт блокировок при выполнении транзакции:
Превышено максимальное время ожидания предоставления блокировки". устанавливал более длительное время ожидания блокировки в конфигураторе - не помогало.
34 1с_ник
 
21.12.16
11:18
(33) и как удалось решать проблему после выяснения причины?
35 novichok79
 
21.12.16
11:19
(34) помог рестарт postgresql и вакуум с реиндексом на выходных.
36 1с_ник
 
21.12.16
11:21
(35) вот поэтому мало надежд на техн. журнал. Ибо то что могло помочь в этом случае уже сделано.
37 novichok79
 
21.12.16
11:22
(36) ну, пальцем в небо. разверни копию базы, и попробуй запустить перепроведение документов массово. если ошибка повторяется - то значит дело в самой базе, а не глюк связки PostgreSQL и 1С.
38 Feanor
 
21.12.16
11:30
(0) судя по тексту ошибки, таймаут происходит на управляемой блокировке, зачем в этом случае нужно крутить СУБД?

Правильный способ решения заключается в анализе управляемых блокировок в технологическом журнале
39 Dmitrii
 
гуру
21.12.16
11:36
(0) Первый вариант - откат всех обновлений.
Второй вариант (пальцем в небо) -
Попробовать сборки от PostgresPro
https://postgrespro.ru/products/1c_build
Разработчики утверждают, что их сборки уже на 90% оптимизированы под работу с 1С. То есть никаких дополнительных действий после установки делать не нужно, кроме уж каких-то совсем эксклюзивных настроек.
Кроме того в них содержится большое количество патчей под 1С, которых просто нет в тех сборках, которые публикуются на сайте 1С. Версия с сайта 1С 9.4.2-1.1C была опубликована в июне 2015-го года, когда платформы 8.3.9 еще и в проекте не было.
Причем для Windows доступны уже сборки версии 9.5.5 и 9.6.1. Про последнюю не знаю, а 9.5 имеет статус "для тестирования" чисто формально только из-за того, что не могут договориться о её официальной поддержке со стороны 1С.
40 novichok79
 
21.12.16
11:39
(39) а от блокировок это не спасает. я использую PostgreSQL 9.4.10 с https://postgrespro.ru/products/1c_build
отсюда беру 64-битный сервер, отдельно загружал 64-битный клиент pg_myadmin.
41 novichok79
 
21.12.16
11:46
(39) ссылки битые.
(0) если надо, могу скинуть 64-битный дистрибутив 9.4.10
42 1с_ник
 
21.12.16
11:48
(31) не помогло. Начну с понижения сервера 1с и платформы. Отпишусь
(41) учту, пока не надо
43 Feanor
 
21.12.16
11:59
(36) "от поэтому мало надежд на техн. журнал. Ибо то что могло помочь в этом случае уже сделано."

Это не так, для решения данной проблемы еще не сделано ничего от слова "совсем" :)

Твой единственный способ решить эту проблему - определить, что именно накладывает несовместимую управляемую блокировку
44 Feanor
 
21.12.16
12:02
45 dmrjan
 
21.12.16
12:11
(39) Под Linux уже тоже готовы сборки 9.6.1
Весной ожидается выпуск коммерческой сборки Postgres Pro Enterprise 2, в которой обещают существенно увеличить производительности Postgres и даже обеспечить ее выше, чем в других коммерческих базах SQL:
https://postgrespro.ru/products/postgrespro/enterprise
46 1с_ник
 
21.12.16
12:12
Проблема блокировок в (0) ушла.

Решение:

Откатил платформу 1с с сервером 1с до версии 1с 8.3.8.1652, сервер 1с х32
47 1с_ник
 
21.12.16
12:17
(44) спасибо за ссылку- будет время, освою
48 Dmitrii
 
гуру
21.12.16
12:30
(45) Я одного не понял: сколько будет стоить коммерческая сборка и чем она будет отличаться от обычной.
49 novichok79
 
21.12.16
12:32
(48) +100500
тоже интересует этот вопрос - вроде как эта сборка работает быстрее "ванильной" и включает последнюю версию PostgreSQL + патчи для работы с 1С.
50 dmrjan
 
21.12.16
12:35
(48) Пока молчат. Ощущение такое, что разрешать продавать 1С, тогда у той появится интерес к PostgreSQL.
51 dmrjan
 
21.12.16
12:37
Кстати, вернули сборку PostgreSQL под 1c Предприятие 8.2 и даже обновили до PostgreSQL 9.3.15 (для 1С версии начиная с 8.2).
52 1с_ник
 
21.12.16
13:16
(51) и это правильно, есть конфиги живущие на 8.2, которым 8.3 надо как мопсу слоновьи уши.
53 1с_ник
 
21.12.16
13:20
(48)Интересно. Ребята создавали бесплатную систему. Кто то взял её за основу, добавил плюшек и будет продавать. Ребята не против, или они в доле?
54 Dmitrii
 
гуру
21.12.16
13:49
(53) >> Ребята создавали бесплатную систему

Ребята из PostgresPro - это часть тех самых ребят, которые создавали бесплатную систему. )))
Где-то даже было перечисление количества изменений в ванильных версиях, которые были внесены этими разработчиками.

>> Кто то взял её за основу, добавил плюшек и будет продавать. Ребята не против, или они в доле?

А что в этом такого? Это отдельный форк. Ни кого же не возмущает, что Fedora бесплатна, а RedHat денег стоит.
Собственно говоря, если коммерческий релиз объективно даёт реальные преимущества по сравнению с ванильным или другим бесплатным, то почему бы и не заплатить.

Пугает, что в анонсе коммерческой Enterprise-версии не указано перекочуют ли патчи для 1С исключительно в коммерческую версию, или в бесплатной версии эти патчи тоже останутся.
55 ansh15
 
21.12.16
14:56
(54) Думаю, будут обе версии. Enterprise для таких систем https://habrahabr.ru/company/postgrespro/blog/270827/
или для 8-way x86(для тех, кто "победнее")за отдельную плату, обычная - для остальных, кто купил 1С и подписку на ИТС.
56 yzimin
 
22.12.16
01:04
это ошибка зафиксирована https://bugboard.v8.1c.ru/error/000019824.html

тоже на днях столкнулся с одной из перепиленных УТ 11.1 после обновления на 8.3.9.1850.

Решил так: в конфигурации поставил режим совместимости 8.3.5

Есть подозрение, что с 8.3.9.1850 все конфигурации в режиме совместимости 8.1 не работают
57 yzimin
 
22.12.16
01:05
(56) *Есть подозрение, что с 8.3.9.1850 все конфигурации в режиме совместимости 8.2 не работают
58 Фрэнки
 
22.12.16
16:55
(57) ну как "не работаю" - глючат иногда, на самых непредсказуемых моментах. У меня такое же подозрение.
59 Фрэнки
 
22.12.16
16:57
топикстартер там выше написал, что проблему с ошибкой устранил, понизив версию платформы на сервере. А вот насколько он ее понизил? Не написал