Работаем в SQL версии 1С:УПП. Платформа 8.3.16.1814, конфигурация в режиме совместимости с 8.2.13, как положено для УПП.
С некоторых пор народа стало больше работать и всех замучали взаимные блокировки.
То есть не просто два пользователя зашли в один документ, и один из них не может его сохранить, пока второй с ним не закончит работу.
А буквально - куча разного народу работает в РАЗНЫХ документах, начиная от требований-накладных и заканчивая заказами покупателей. И блокируется проведение этих разных документов.
То есть менеджер залез в заказ, оператор в реализацию, бухгалтер в отчет производства за смену, и никто не может провести, вылезает ошибка (см.скриншот), и они сидят ждут друг друга, жмут на ОК, кто первый освободит документ, и дальше по цепочке проведение уже нормально проходит.
Я так понимаю, при проведении документа блокируются транзакции по всем регистрам, которые он двигает, поэтому затрагивается целый круг других документов, которые работают с этими же регистрами.
Не очень понятно, что можно сделать в рамках ограничений платформы 8.2 и УПП, но народ у нас ропщет, мол, где они раньше работали, ничего подобного не наблюдалось.
Какие-то рекомендации по оптимизации настроек SQL-сервера и сервера 1С делали, вроде даже сначала эффект какой-то был, но потом все вернулось на круги своя.
Как-то решается эта проблема? Или ничего не сделать до перехода на платформу 8.3 и ERP?
Для начала перестроение, дефрагментация индексов, обновление статистики, шринк базы, шринк лога.
и если после стандартного обслуживания базы проблема не уходит то:
и события SQL lock_deadlock, lock_deadlock_chain, lock_timeout, lock_escalation, lock_timeout_greater_than_0, xml_deadlock_report, rpc_completed, sql_batch_completed
По событиям SQL найдете блокировки SQL далее тж чтоб строки кода найти используете тж, по ТЖ управляемые блокировки, а далее править.
Сюдя по ошибке у вас управляемые блокировки и держать должно куда поболее 100 пользователей естественно при типовой конфигурации.
(5) Журналы смотрели. Там просто транзакции по многочисленным регистрам сведений и накоплений. Они висят какое-то время и потом отменяются.
Как проанализировать более предметно - часть вопроса. Можете что-то подсказать?
(2) Xeon Gold 5217, 128 Гб ОЗУ. MS SQL и 1С сервер 64 битные. Количество пользователей от 30 до 40. По данным диспетчера задач процессор обычно нагружен на 10-15%, памяти занято 60-70%.
(4) Это обнадеживает. Есть мысли что где можно настроить для оптимизации?
Можете поделиться настройками кластера 1С и сервера 1С? Например "количество соединений на процесс" у вас какое стоит? Мы пробовали менять этот параметр, вроде бы как раз улучшения наблюдались, но какие-то временные. Так в итоге и не поняли, с каким значением лучше.
(10) Хм... Есть планы обслуживания. В том числе выполняется задание по резервному копированию журнала транзакций раз в 2 часа.
Совсем не подумал, что это может влиять.
P.S. Но вроде бы по времени не бьётся. Бэкап в 9, 11, 13, 15 и 17. Затыки, например, в 10:30. То есть первый бэкап по любому уже отработал, а второй еще не начался.
(12) Копирование журнала транзакций как-бы не должно (на 100% не уверен, мы ЖТ не бекапим), но лучше проследить что творится на сервере в момент возникновения блокировок. Другие планы и их расписание также посмотрите что и во сколько.
(1) Выкинуть режим совместимости..совсем (сделав реструктуризацию V2, чтоб не ждать год). Режим управления блокировками выставить в свойствах конфы- управляемый. Это для начала.
(28) да.. ибо на некоторых типовых еще режим совместимости с 8.2.
Это же полный ПЭ.
Да. Всем кто захочет режим совместимости >=8.3.15, надо иметь ввиду, что РБ теперь имеет движенияССубконто как реальную табличку, добавив 24 новых поля в основную табличку регистра бухгалтерии. Для баз чуть больше ларька, обычная реструктуризация может длиться сутками и..не закончиться, при ошибках. Чтоб не ждать - делайте реструктуризацию V2
У себя отказались от режима совместимости года 2 назад. Стоит 8.3.12 - полет нормальный. Примерно 100 сеансов каждый день - блокировок нет. Кроме изменения собственно свойства режим совместимости и управляемых блокировок приходится комментировать строковые функции в общем модуле ЕГАИС, которые появились в платформе 8.3 и переименовать структуру НаправлениеПоиска, которая в платформе 8.3 является системным перечислением.
Для начала перестроение, дефрагментация индексов, обновление статистики, шринк базы, шринк лога.
и если после стандартного обслуживания базы проблема не уходит то:
и события SQL lock_deadlock, lock_deadlock_chain, lock_timeout, lock_escalation, lock_timeout_greater_than_0, xml_deadlock_report, rpc_completed, sql_batch_completed
По событиям SQL найдете блокировки SQL далее тж чтоб строки кода найти используете тж, по ТЖ управляемые блокировки, а далее править.
Сюдя по ошибке у вас управляемые блокировки и держать должно куда поболее 100 пользователей естественно при типовой конфигурации.
Забыл отписаться. По факту помогла корректная настройка обслуживания базы.
Обновление статистики, дефрагментация индексов, перестроение, вот это вот всё.
(31) Добрый день!
Тоже похожая проблема на предприятии, УПП sql 8.3. Только пользователей 500+
Сделали свертку, после этого начались блокировки.
Что только уже не делали, и сервер поменяли, мощный теперь, и все процедуры в ТИ, и dt ввгружали-загркжали. Не помогает ничего.
(32) Нет универсального решения. но 80% случаях виноват скуль/винда/сеть.
Оставшиеся 20% - говнокод
0% необходимо оптимизация запросов в УПП. Но для этого надо в скуле получить статистику и расшифровать/интерпретировать ее.