Лучшие практики конфигурации. Производительность
В данном разделе приведены аспекты функционирования приложения, на которые стоит обратить внимание для сохранения приемлемого уровня производительности приложения SMP.
Объекты
Классы и вложенные типы
При типизации объектов и построении иерархии вложенных типов, стоит исходить из положения, что максимальный уровень вложенности должен быть не более 5 относительно "Основного класса". Необходимо помнить, что объекты всех типов одного класса объектов размещаются в одной и той же таблице в базе данных.
Такой подход позволит сэкономить ресурсы на определение уникальных свойств объектов, особенно при разрыве наследования настроек.
Не рекомендуется добавлять отдельные типы для создания форм с разным наполнением полей. Вместо этого рекомендуется разместить на форме отдельные контенты и для каждого из них настроить условия отображения в зависимости от значения атрибута.
Пример. Чтобы на форме добавления запроса отображался разный набор полей в зависимости от услуги, для каждого контента необходимо задать условие отображения, где атрибут "Услуга" (service) содержит определенное значение.
Чтобы определить условия отображения контентов в зависимости от других объектов, в качестве атрибута можно использовать атрибут типа "Элемент справочника".
Создание большого количества типов увеличивает нагрузку на приложение и потребление памяти. Разрыв наследования настроек при большом количестве типов усложняет поддержку приложения, поскольку новую настройку, необходимую для всех типов, потребуется добавлять в каждый тип отдельно.
Атрибуты класса/типа
Количество атрибутов в классе объектов и вложенных в него типах рекомендуется ограничивать суммарно до 700 штук.
Объявление большого количества атрибутов приводит к увеличению соответствующих таблиц в базе данных, что, в свою очередь, ведет к росту занимаемого дискового пространства и "утяжелению" самих объектов при их обработке в приложении.
Вычислимые атрибуты в списках
С осторожностью стоит подходить к добавлению вычислимых атрибутов, а также атрибутов типа "Обратная ссылка" в группы атрибутов для использования в сложных списках.
Рекомендуется добавлять не более 1-2 таких атрибутов в группы для списков, а количество объектов списка, отображаемое для вида списка по умолчанию, устанавливать не выше 20.
Списки объектов
Если предполагается, что список связанных объектов, построенный через связь по атрибуту типа "Обратная ссылка" будет содержать слишком много связанных объектов (сотни тысяч и более), то рекомендуется использовать контент "Список объектов" с заданными условиями фильтрации.
Архитектура приложения
При разворачивании приложения SMP на сервере рекомендуется выделять отдельную JVM под нужды приложения SMP.
Сторонние сервисы стоит развернуть на других виртуальных машинах во избежание конкуренции за ресурсы.
Примером стороннего сервиса, обеспечивающего работу самого приложения SMP, может являться внешний брокер очередей сообщений Artemis или IBM MQ.
Нагрузка на приложение
При возрастании нагрузки на приложение (с течением времени неизбежно увеличивается количество объектов, растет количество пользователей, появляются новые интеграции с внешними информационными системами) рекомендуется соблюдать требования, приведенные в разделе Требования к программному и аппаратному обеспечению. Также рекомендуется периодически проверять выполнение хотя бы минимальных требований для текущего состояния приложения, а лучше соответствие рекомендованным требованиям, прежде всего аппаратной конфигурации.
Отображение интерфейса
Условия отображения контентов на формах и карточках приложения проверяются на рабочих станциях, поэтому их чрезмерная сложность и большое количество могут замедлять отображение страниц на рабочих станциях с низкопроизводительной аппаратной конфигурацией.
При возникновении вопросов в процессе разворачиванием файлового антивируса на сервере приложения SMP обратитесь в службу поддержки компании NAUMEN для получения технической консультации.
Инфраструктурные настройки
Для настройки взаимодействия с антивирусом необходимо добавить следующие каталоги на сервере приложения SMP в исключения File_Threat_Protection (Проверка файлов в реальном времени):
-
/opt/naumen/nausd4/{data,logs,storage}
- /opt/naumen/nausd4/data — каталог с поисковыми индексами, динамически компилируемыми модулями и прочими данными, до которых требуется быстрый доступ на стороне дисковой подсистемы.
-
/opt/naumen/nausd4/logs — каталог с логами. В секунду в файл может записываться 100+ строк, что тоже требует доступа на диск.
Если есть необходимость сканировать каталог, то можно попробовать добавить в исключения файл sdng.log (текущий файл лог ), т.к. он ротируется и меняет название sdng.log.<дата>.gz.
- /opt/naumen/nausd4/storage — каталог файлового хранилища.
-
/opt/naumen/nausd4/tomcat/{temp,logs,bin,lib}
- /opt/naumen/nausd4/tomcat/temp — каталог для записи временных файлов Tomcat, включая политики хранения на диске;
- /opt/naumen/nausd4/tomcat/logs — аналогично /opt/naumen/nausd4/logs, но в этом случае лучше добавлять весь каталог, т.к. в нем хранятся разные типы файлов.
- /opt/naumen/nausd4/tomcat/bin — каталог с исполняемыми файлами Tomcat.
- /opt/naumen/nausd4/tomcat/lib — каталог с библиотеками.
Причины, по которым необходимо добавить указанные каталоги в исключения:
- Данные каталоги активно используются антивирусом для операций чтения и записи. Могут возникнуть проблемы доступа от приложения к файлу, если будет происходить сканирование со стороны антивирусного ПО;
- Антивирус может в любой момент времени сбросить TCP соединение (подобное поведение наблюдается на СУБД, если каталог с БД и исполняемые файлы СУБД не добавлены в исключения).
Также в исключения необходимо добавить каталоги с данными и логами на сервере СУБД, предварительно рекомендуется ознакомиться с рекомендациями производителя, пример для Postgres.
Если есть необходимость установки антивирусного ПО на другие серверы, то рекомендуется уточнить информацию у разработчика ПО.
Важно отметить, что рекомендации позволят избежать блокировки работы приложения, но не гарантируют отсутствия проблем, например в следствии повышения нагрузки на сервер.
Если включена защита от веб-атак, то она может провоцировать разрыв соединения. В таком случае необходимо указать в списке исключений тот ресурс, который устанавливает соединение.