Тонкая настройка очереди выражений

Модулю обработки выражений может потребоваться настройка с учетом ресурсов сервера, количества выражений и уровня сложности каждого установленного экземпляра. Как правило, выполняется последовательная настройка каждого параметра с измерением производительности до тех пор, пока не будет достигнута максимальная производительность. Требуется вести хронологию записей. После изменения аппаратного обеспечения, условий использования и конфигурации необходимо повторить настройку.
Администратор должен проверить следующие параметры приложения для каждого экземпляра:
Табл. 1. Тонкая настройка очереди выражений. Параметры приложения
Параметр Единицы измерения Значение по умолчанию Динамический* Описание Советы по настройке
formula.queue.maxage ч 24 Да Срок хранения хронологии очереди выражений в часах (не гарантируется). Очищаются только обработанные выражения. Очистку выполняет задание очистки формул. Обработанные записи очереди в таблице очереди формул сохраняются в хронологии выполнения. Эта хронология используется для проверки циклов выполнения и сбора статистики. Если статистика не требуется, это число можно уменьшить в конфигурации для высокой пропускной способности, чтобы уменьшить размер таблицы. Это значение не следует обнулять, так как для правильной проверки циклов требуется хронология длиной не менее часа.
formula.queue.maxsize записи 500000 Да Желательное максимальное число записей в очереди выражений. Задание очистки старается удерживать число записей ниже этого значения, удаляя записи из хронологии. Очищаются только обработанные выражения. Этот параметр переопределяет параметр formula.queue.maxage. В периоды высокой нагрузки это значение можно уменьшить, чтобы сократить длину очереди формул, а, когда требуется сохранение хронологии, увеличить. Рекомендуется указывать значение чуть ниже средней пропускной способности в период formula.queue.maxage.
formula.execution.batch.size записи 30 Да Число записей очереди выражений, выделяемых одной нитью за одну операцию выделения. Эти записи помечаются как "запущена". Нить обрабатывает их, затем выделяет новый пакет.

Это важный параметр. Выражения выполняются параллельно в произвольном порядке несколькими нитями на нескольких узлах, но всегда с учетом зависимостей и хронологии. Например, если два выражения в очереди никак друг с другом не связаны, они могут выполняться в любом порядке. Но выражения нельзя выполнить, пока не выполнены их экземпляры или выражения, от значений которых они зависят. Поэтому требуется выделение выражений, чтобы избежать конфликтов, нарушения порядка и избыточной работы.

Поскольку выделение - дорогая операция, выделяется сразу несколько выражений с учетом вышеописанного требования и с условием, что они обрабатываются в заданном порядке. Выделение большого числа выражений снижает эффективность параллельной обработки и наоборот. Рекомендуется уменьшать значение этого параметра, если выражения образую длинные цепочки зависимостей, и увеличивать его для коротких выражений с небольшим числом зависимостей. Это значение можно изменять во время выполнения (оптимальное значение находится опытным путем). Не рекомендуется указывать значения меньше 10 и больше 200.

formula.cleanup.interval миллисекунды 1800000 Нет Частота очистки очереди выражений. Учитываются значения параметров maxage и maxsize. Обычно выполняется только очистка очереди. Первая операция очистки выполняется во время запуска сервера (при этом выполняется специальное обслуживание). Кроме того, каждые две недели выполняется проверка целостности выражений (в ночное время). В большинстве случаев рекомендуется использовать значение по умолчанию. В случае высокой пропускной способности очистка может занимать больше времени и ее следует выполнять с большей частотой. Увеличение этого времени может привести к прерыванию выполнения или снижению производительности в случае резкого увеличения нагрузки (например, после импорта или добавления атрибута).
formula.background.interval миллисекунды 10000 Нет Частота проверки очереди выражений для новых выражений, подлежащих выполнению. После завершения пакетного задания сразу выполняется новая проверка без дополнительного ожидания. Если при наступлении следующего интервала очередь все еще содержит необработанные записи, создается еще одна рабочая нить, чтобы ускорить обработку. В предыдущих версиях Rational Focal Point применялся асинхронный режим для немедленного выполнения. При перемещении выражений в базу данных существовала вероятность возникновения тупиков. Указанный интервал применяется для проверки наличия ожидающих обработки выражений. В течение этого времени (плюс время выполнения) пользователь ожидает вычисления выражения (обновления). Опрос необработанных записей очереди - недорогая операция, если их нет, поэтому это время может быть небольшим. Однако, если указать слишком короткий интервал, это вызовет перерасход ресурсов. Это также влияет на рост числа нитей. Если рабочая нить, созданная в предыдущий интервал, не успела завершить работу по истечении интервала; создается новая нить (до достижения значения thread.per.nodes). Если число нитей растет слишком медленно или требуется снизить латентность вычислений, это значение можно уменьшить. Если выражения используются нечасто, значение этого параметра можно немного увеличить.
formula.max.background.threads.per.node число 2 Нет Максимальное число параллельных нитей, применяемых для выполнения выражений на каждом узле. Фактическое максимальное число определяется в динамическом с учетом наличия свободных нитей в пуле нитей приложения. В описании параметра background.interval описан алгоритм увеличения числа нитей обработки выражений на узле каждый интервал, если есть невыполненная работа. Для этого требуются свободные нити в пуле нитей приложения, который настраивается автоматически с учетом числа процессорных ядер (виртуальных или физических). Кроме того, эта функция не может использовать последнюю нить в пуле. С этим числом можно поэкспериментировать. Однако при этом не гарантируется повышение производительности, поскольку она в значительной степени зависит от возможностей параллельной обработки базы данных. Признаком того, что значение слишком маленькое, является рост числа необработанных выражений в очереди и низкая нагрузка на базу данных.
formula.cleanup.enabled булевское значение true Да Очистка очереди выражений включена по умолчанию. Ее можно отключать только в процессе отладки или измерения производительности, когда очистка не требуется. Этот параметр настраивать не следует. Никогда не изменяйте его. Оставьте значение по умолчанию (true).

* Пометка Время выполнения показывает, когда применяется данный параметр приложения: во время выполнения (значение Да) или только во время запуска (значение Нет).


Отправить комментарий