Параметры работы
Параметры работы в платформе могут задаваться одним из следующих способов (в порядке их приоритетов, снизу более приоритетные):
- В java коде в файле
lsfusion.server.physics.admin.Settings.java
(актуально для форков платформы) - В
lsfusion.properties
(обычно являются ча стью проекта, а значит действует по умолчанию для всех инсталляций) - название параметра должно начинаться наsettings
(напримерsettings.enableUI
) - В
conf/settings.properties
(для конкретных инсталляций) - название параметра должно начинаться наsettings
- В Java параметрах запуска название параметра должно начинаться на
D
иsettings
(например-Dsettings.enableUI=2
) - В БД:
Администрирование > Система > Настройки > Параметры
. В этом интерфейсе можно задать как глобальные настройки, так и настройки для конкретных ролей - Во время выполнения действия, при помощи системных действий:
Service.pushSetting[STRING, STRING]
,Service.popSetting[STRING]
(перегружают значение свойства для всего текущего потока).
Тип параметра | Описание | По умолчанию | |
---|---|---|---|
enableUI | int | Определяет доступ к пользовательскому интерфейсу (в том числе для form api)2 - Разрешать анонимный доступ1 - Разрешать только аутентифицированный доступ0 - Не разрешать доступ | 1 (при старте сервера в режиме разработки - 2 ) |
enableAPI | int | Определяет доступ к программному интерфейсу (за исключением form api)2 - Разрешать анонимный доступ1 - Разрешать только аутентифицированный доступ0 - Не разрешать доступ | 1 (при старте сервера в режиме разработки - 2 ) |
freeConnections | int | Максимальное количество соединений в пуле соединений на сервере приложений | 12 |
statDegree | int | Основание используемое для оценки количества записей (статистики) всеми оптимизаторами. Так оптимизаторы любое количество записей считают равным заданному основанию в некоторой степени (например если количество записей реально равно 1000 , а основание 5 , то оптимизатор считает количество записей равным 5 в 4 -й степени). Соответственно, чем больше основание, тем менее точной становится статистика, а значит уменьшается время компиляции, размеры кэшей и генерируемых запросов, но при этом может существенно повышаться вероятность ошибки при построении правильного плана запроса. | 5 |
authTokenExpiration | int | Время действия токена аутентификации в минутах. | 60*24 (1 день) |
reserveIDStep | int | Количество ID, которые сразу резервирует сервер приложений для оптимизации при выполнении одиночных операций добавления объектов (при асинхронном вводе, одиночном NEW и т.п.) | 50 |
excessThreadAllocatedBytes , accessInterruptCount | long , int | Определяют порог и количество итераций замера памяти, в течении которых этот порог превышен, после которых java поток будет автоматически прерываться. Этот механизм как правило используется для повышения отказоустойчивости сервера приложений. | 5GB , 4 |
queryLengthTimeout | int | Параметры механизма материализации запросов. queryLengthTimeout - с какой длины запроса включать этот механизм | 1000 |
useRequestTimeout | boolean | Включает механизм повторных удаленных вызовов, если эти вызовы выполняются слишком долго. Необходимо для разрешения ситуаций, когда вызов выполнен на сервере, но ответ из-за сетевых проблем не приходит (где-то теряется). Последнее обычно бывает, когда сервер приложений работает в виртуализированной среде. Соответственно, в таком случае эту настройку рекомендуется включать, и выключать в обратном случае. | true |
tempTablesTimeThreshold , tempTablesCountThreshold | int , int | Определяют минимальный порог времени жизни (в секундах) временной таблицы и количество таблиц на соединение, при превышении которых эти временные таблицы начинают очищаться / удаляться в регламентном режиме. Минимальный порог времени жизни таблицы должен быть соизмерим со стандартным временем использования временной таблицы. Чем эти пороги меньше, тем меньше потребление ресурсов сервером бд, но тем выше вероятность возникновения "ротации кэшей" | 240 , 40 |
queryRowCountPessLimit , queryRowCountOptDivider | int , int | Параметры механизма защиты от слишком больших запросов. queryRowCountPessLimit - минимальное количество записей, для которых начинает работать эта защита, queryRowCountOptDivider - порог, при превышении которого сервер приложений будет кидать ошибку (задается как часть памяти от всей имеющейся в распоряжении сервера приложений памяти, так если равно значение параметра равно 50 , а объем памяти 100GB , то порог равен 100GB/50=2GB ). | 1000 , 50 |
queryLengthLimit | int | Параметры механизма защиты от слишком длинных запросов. queryLengthLimit - длина запроса, при превышении которого сервер приложений будет кидать ошибку. | 2000000 |
remoteLogTime | int | Порог времени выполнения (в миллисекундах), при превышении которого удаленный вызов записывается в соответствующий лог (server-remote) | 3000 |
explainThreshold , explainJavaStack , explainCompile | int , boolean , boolean | Параметры вывода логов планов выполнения запросов
| 100 , false , false |
startServerAnyWay | boolean | Стартовать сервер, даже при наличии ошибок в структуре индексов или синхронизации метаданных | false |
conflictSleepThreshold , conflictSleepTimeDegree | int , int | Параметры устранения повторяющихся update conflict'ов:
| 3 , 2 |
timeoutNanosPerRow | int | Среднее количество наносекунд на обработку одного ряда (необходимо для оценки того, сколько приблизительно должен выполняться запрос). Если это расчетное время превышено платф орма пытается материализовать некоторые подзапросы (или как-то изменить этот запрос на более пессимистичный) и выполнить запрос снова. Уменьшение этого параметра может приводить, к более частым материализациям и вообще дополнительным повторным выполнениям запроса, увеличение может привести к использованию неправильных планов (прежде всего nested loop'ов на соединении больших таблиц), в случаях когда, к примеру, SQL сервер неправильно оценивает статистику подзапросов. | 20 |
deadLockThreshold | int | Параметры устранения повторяющихся dead lock'ов. deadLockThreshold - после какого количества неудачных (когда возникал dead lock) попыток включать механизм. | 0 |
periodRestartConnections , percentRestartConnections | int , int | Параметры механизма перестарта соединений. periodRestartConnections - определяет как часто (период в секундах) будет запускаться этот механизм. percentRestartConnections - какой процент соединений с максимальным скорингом будет перестартовываться. | 60 , 1 |
closeFormDelay | int | Период, который дается клиенту на то, что бы закончить все дела с формой после инициации ее закрытия на сервере (этот механизм нужен для экономии round trip запроса при закрытии формы). | 5000 |
constraintRowsLimit | int | Определяет сколько рядов выводить при выдаче сообщения о нарушении ограничения | 30 |
defaultCompareForStringContains | boolean | Использовать Содержит в качестве фильтра по умолчанию в пользовательских фильтрах | false |
limitHintIncrementComplexity , limitComplexityGrowthCoeff , limitHintIncrementStat , limitHintIncrementValueComplexity , limitApplyHintIncrementComplexity , limitApplyHintIncrementStat | int , double , int , int , int , int | Параметры управления сложностью изменений (материализация изменений свойств, когда сложность инкрементальных вычислений становится слишком большой):
| 50 , 1.5 , 200 , 1000 , 100 , 1000 |
excessThreadAllocatedBytes , excessInterruptCount , threadAllocatedMemoryPeriod | long , int , int | Параметры механизма защиты от слишком большого потребления памяти на сервере приложений:
| 5368709120L (5GB), 4 , 180 (3 минуты) |
useSavePointsThreshold , savePointCountForExceptions , updateSavePointsMinMultiplier , updateSavePointsMaxMultiplier | int , int , double , double | Параметры механизма использования savepoint'ов в транзакциях (для того чтобы не перестартовывать всю транзакцию, например в механизме материализации подзапросов):
| 5 , -1 , 0.8 , 3.0 |
editLogicalOnSingleClick | boolean | Определяет будет ли событие изменения свойства логического типа на форме инициироваться по одиночному (true ) или двойному (false ) клику мыши | false |
editActionOnSingleClick | boolean | Определяет будет ли событие вызова действия на форме инициироваться по одиночному (true ) или двойному (false ) клику мыши | false |
к сведению
Помимо системных параметров, в платформе также существуют параметры запуска, которые задаются немного по другому и актуальны преимущественно для процессов запуска (инициализации) различных компонент платформы, а также доступа к этим компонентам.