
Но обо всем по порядку. Больной - конфигурация ERP 2.4, симптомы - конфигуратор и процессы rphost потребляют подозрительно много памяти. При этом оказалось, что проблема от пользовательских данных особо не зависит.
Ок, развернул тестовый стенд на виртуалке и начал изучать пациента.
В конфигураторе рост потребления памяти начинается при открытии любой формы.
Для rphost при первом клиентском подключении.
Поскольку конфигуратор тоже потреблял память, было решено проверить гипотезу, что проблема находится где то в метаданных. Была развернута типовая конфигурация, включена возможность изменений, открыта произвольная форма и зафиксированы начальные показатели.
После чего последовательно начал подтягивать добавленные при доработке объекты по типам. Сначала были загружены перечисления, справочники, документы и только после добавления ролей был получен похожий эффект потребления памяти.
Первый анализ добавленных ролей явных проблем не выявил - роль выдана на конкретный объект конфигурации, ничего лишнего. Поэтому на следующем этапе решил посмотреть как выглядят добавленные роли после выгрузки конфигурации в файлы. Оказалось, выгруженные роли занимают более 50% от объема файлов всей конфигурации, а среди файлов ролей есть 237 файлов по 20 Мб, общим объемом 4,42 Гб.
После изучения первого попавшегося файла все встало на свои места и мне удалось повторить порядок действий и создать роль, которая при выгрузке имеет такой же большой объем. Как оказалось, у всех ролей при создании включена настройка "Устанавливать права для реквизитов и табличных частей по умолчанию", и у проблемной роли права на реквизиты прочих объектов не установлены. Что бы сделать такую роль, необходимо после создания выполнить "Действия" - "Снять все права", оставив все остальные настройки без изменения, после чего продолжить настройку нужных прав.
В итоге у такой роли помимо настроек объекта прав для каждого реквизита всех остальных объектов конфигурации в XML-файле установлено значение false, что в итоге приводит к подобному объему файла.
Соответственно, при открытии формы в конфигураторе, либо при первом подключении все эти объемы подтягиваются в процессы. Чтобы исправить роль, необходимо выключить и включить настройку "Устанавливать права для реквизитов и табличных частей по умолчанию". После изменения всех проблемных ролей потребление памяти значительно сократилось.
Статья так же опубликована на Инфостарте.
Спасибо, интересный случай.
ОтветитьУдалитьСпасибо.
ОтветитьУдалитьКак раз хотел снять эту галочку для части ролей :)
Интересно, а почему так, проблема в самой платформе?
ОтветитьУдалить