pgpro_tune — утилита командной строки для автоматической настройки
pgpro_tune [параметр...] [ -D | --pgdata ]каталогимя_пресета
pgpro_tune — это утилита командной строки для автоматической настройки. Оптимальные значения различных параметров конфигурации Postgres Pro зависят от оборудования. Утилита pgpro_tune собирает информацию о системе и преобразует её в набор параметров, записываемых в файл конфигурации.
Использование pgpro_tune включено в initdb по умолчанию. Для этой утилиты предусмотрено два параметра initdb: --no-tune отключает её использование, --tune=OPTIONS позволяет передавать дополнительные параметры для запуска pgpro_tune.
Сначала pgpro_tune запускает стандартный пресет. Дополнительные пресеты могут быть заданы с помощью параметра -P или --preset=NAME, или путём указания имени пресета в качестве последнего аргумента командной строки. Чтобы отключить стандартный пресет, используйте параметр --no-default.
В данный момент доступны следующие пресеты по умолчанию:
default.tune: Основной на данный момент пресет, который обеспечивает различные конфигурации в зависимости от редакции и версии сервера.
regress.tune: Этот пресет применяется для отладки. Он отменяет изменения, произведённые конфигурационными параметрами пресета default.tune. Таким образом обеспечивается успешное выполнение регрессионных тестов, результаты которых могут различаться из-за аппаратно-зависимых настроек.
1c.tune: Этот пресет содержит параметры, специфичные для 1С, некоторые из которых требуют установки plantuner. Подробную информацию о настройках Postgres Pro для решений 1С можно найти в Приложении K.
extensions.tune: Этот пресет содержит дополнительные параметры для расширений. Эти параметры требуют установки других модулей (таких как pg_stat_statements).
Дополнительные параметры можно указать с помощью -O или --options=OPTIONS для любого пресета, но для пресета по умолчанию следует использовать --default-options=OPTIONS.
Дополнительные переменные окружения для пресета можно установить в параметре --set NAME=VALUE. Эти значения будут одинаковыми как для пресета по умолчанию, так и для всех пользовательских.
По умолчанию пресеты размещаются в каталоге share, но можно указать их расположение вручную в параметре --preset-dir=NAME.
По умолчанию pgpro_tune работает с файлом конфигурации postgresql.conf, расположенным в каталоге данных. Каталог данных можно указать с помощью -D или --pgdata=DATADIR, либо задать с помощью переменной окружения PGDATA. При запуске pgpro_tune в initdb утилита будет использовать каталог данных initdb.
Файл конфигурации также можно указать с помощью --config-file=FILENAME.
Утилита pgpro_tune записывает свои изменения в отдельный блок в конце файла конфигурации с комментарием, что он был добавлен pgpro_tune. За подробностями обратитесь к примеру пресета.
--config-file=имя_файлаУказывает имя основного файла конфигурации.
-D каталог_данных--pgdata=каталог_данныхУказывает каталог, где будет храниться кластер баз данных.
--default-options=параметрыЗадаёт параметры для стандартного пресета.
--no-defaultОтключает стандартный пресет. Обратите внимание, что в этом случае обязательно должен быть указан другой пресет либо с помощью параметра -P, либо в качестве последнего параметра в виде имени этого пресета.
-O параметры-пресета--options=параметры-пресетаУказывает параметры, которые необходимо передать непосредственно пресету, заданному ранее в параметре -P, или пресету, указанному в качестве последнего параметра командной строки, если -P не использовался.
-P имя--preset=имяУказывает имя пресета. Если указано несколько имён, пресеты выполняются по очереди с учётом вывода предыдущего пресета.
Имя пресета может быть указано либо в этом параметре, либо в качестве последнего параметра. Использование обоих вариантов одновременно приведёт к ошибке.
--preset-dir=имяУказывает каталог, содержащий пресеты. По умолчанию пресеты находятся в каталоге share.
--set имя=значениеУстанавливает переменную окружения для пресетов.
--showПоказывает все доступные пресеты из каталога, указанного в параметре --preset-dir, если он задан, или из каталога по умолчанию в противном случае.
-V--versionВывести версию pgpro_tune и завершиться.
-?--helpПоказать справку по аргументам командной строки pgpro_tune и завершиться.
pgpro_tune устанавливает следующие переменные окружения перед запуском пресетов.
ENABLE_CRASH_INFO — если установлена, Postgres Pro был собран с параметром --enable-crash-info.
ENABLE_NLS — если установлена, Postgres Pro был собран с параметром --enable-nls.
ENABLE_PGPRO_TUNE — если установлена, Postgres Pro был собран с параметром --enable-pgpro-tune.
USE_BONJOUR — если установлена, Postgres Pro был собран с параметром --with-bonjour.
USE_BSD_AUTH — если установлена, Postgres Pro был собран с параметром --with-bsd-auth.
USE_ICU — если установлена, Postgres Pro был собран с параметром --with-icu.
USE_LDAP — если установлена, Postgres Pro был собран с параметром --with-ldap.
USE_LIBUNWIND — если установлена, Postgres Pro был собран с параметром --with-libunwind.
USE_LIBXML — если установлена, Postgres Pro был собран с параметром --with-libxml.
USE_LIBXSLT — если установлена, Postgres Pro был собран с параметром --with-libxslt.
USE_LLVM — если установлена, Postgres Pro был собран с параметром --with-llvm.
USE_LZ4 — если установлена, Postgres Pro был собран с параметром --with-lz4.
USE_OPENSSL — если установлена, Postgres Pro был собран с параметром --with-openssl.
USE_PAM — если установлена, Postgres Pro был собран с параметром --with-pam.
USE_SYSTEMD — если установлена, Postgres Pro был собран с параметром --with-systemd.
USE_ZSTD — если установлена, Postgres Pro был собран с параметром --with-zstd.
Пресет — это исполняемый файл, обычно скрипт оболочки, который преобразует информацию, передаваемую через переменные окружения, в набор параметров конфигурации.
Ожидаемый вывод пресета — набор специально отформатированных строк. Первый непробельный символ — индикатор интерпретации содержимого строки для pgpro_tune. Индикатор должен быть одним из следующих символов:
# для комментирования, остальная часть выходной строки будет записана в файл конфигурации после «#».
= для замены, остальная часть выходной строки должна содержать пару параметров NAME и VALUE (приемлемы оба варианта: NAME=VALUE и NAME VALUE). Строка NAME = VALUE будет записана в файл конфигурации. Текст после VALUE будет добавлен как комментарий.
=+ или += для добавления, остальная часть выходной строки должна содержать пару параметров NAME и VALUE. VALUE будет добавлен к предыдущему действующему значению параметра NAME сзади (=+) или спереди (+=). Если действующего значения нет, ADD работает как замена. Текст после VALUE будет добавлен как комментарий.
-= для отмены, остальная часть выходной строки должна содержать пару параметров NAME и VALUE. Если параметр NAME имеет действующее значение, содержащее VALUE, оно будет удалено, а остальная часть действующего значения останется прежней. Текст после VALUE будет добавлен в качестве комментария. Если действующего значения нет, ничего не меняется.
Предположим, есть следующий файл конфигурации с именем test.conf:
work_mem = 4MB # Default value shared_preload_libraries = 'plantuner' search_path = '"$user",wrong_schema,public'
И следующий пресет с именем test.tune:
echo "# Adding new configuration parameters." #Replace configuration parameter value by a new one echo "work_mem = 8MB" #Append to the start of existing value echo "shared_preload_libraries += pg_stat_statements" #Append to the end of existing value echo "shared_preload_libraries =+ pg_prewarm" #Withdraw from existing value echo "search_path -= 'wrong_schema'"
Чтобы использовать этот пресет, выполните следующую команду:
pgpro_tune --config-file=/path/to/test.conf -P/path/to/test.tune --no-default
Эта команда приведёт к следующим изменениям файла конфигурации:
#------------------------------------------------------------------------------ # The following settings were added by pgpro_tune. # pgpro_tune was run with the following options: # --no-default --config-file=/path/to/test/conf -P/path/to/test/tune --no-default # At YYYY-MM-DD HH:MM:SS #------------------------------------------------------------------------------ # Adding new configuration parameters. work_mem = 8MB shared_preload_libraries = 'pg_stat_statements, plantuner' shared_preload_libraries = 'pg_stat_statements, plantuner, pg_prewarm' search_path = '"$user", public' #------------------------------------------------------------------------------ # End of settings added by pgpro_tune at YYYY-MM-DD HH-MM-SS #------------------------------------------------------------------------------