Как изменить настройки памяти Java

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

В этом разделе приведены значения по умолчанию и рекомендуемые размеры кучи Java, а также описано, как изменить значения по умолчанию. В последнем разделе этой статьи рассказывается, как изменить другие настройки JVM с помощью файлов свойств.

Размеры памяти кучи по умолчанию и рекомендуемые размеры

В таблице ниже указаны размеры памяти кучи Java по умолчанию и рекомендуемые размеры для компонентов частного облака на основе Java:

Компонент Название файла свойств По умолчанию
Размер кучи
Рекомендуемый
Размер кучи
Время выполнения
Cassandra – Настроено автоматически1 Настроено автоматически1
Message Processor message‑processor.properties 512 МБ 3–6 ГБ2
Маршрутизатор router.properties 512 МБ 512 МБ
Аналитика
Сервер Postgres postgres‑server.properties 512 МБ 512 МБ
Сервер Qpid qpid‑server.properties 512 МБ 2–4 ГБ
Управляющие
Сервер управления management‑server.properties 512 МБ 512 МБ
Интерфейс ui.properties 512 МБ 512 МБ
SymasLDAP – Нативное приложение3 Нативное приложение3
Смотритель зоопарка zookeeper.properties 2048 МБ 2048 МБ
Примечания

1 Cassandra динамически рассчитывает максимальный размер кучи при запуске. В настоящее время это половина общего объема системной памяти, но не более 8192 МБ. Информацию о том, как задать размер кучи, можно найти в разделе Как изменить размер памяти кучи.

2 Для процессоров сообщений Apigee рекомендует установить размер кучи от 3 до 6 ГБ. Увеличивайте размер кучи до более чем 6 ГБ только после проведения тестов производительности.

Если во время тестирования производительности использование кучи приближается к максимальному лимиту, увеличьте его. Информацию о том, как задать размер кучи, можно найти в разделе Как изменить размер памяти кучи.

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

Чтобы определить, сколько памяти Apigee рекомендует выделить для компонентов на основе Java на узле, сложите значения, указанные выше для каждого компонента на этом узле. Например, если на вашем узле размещены серверы Postgres и Qpid, Apigee рекомендует выделить для них от 2,5 до 4,5 ГБ памяти.

Список необходимого оборудования (например, ОЗУ) приведен в разделе Требования к установке.

Как изменить размер памяти кучи

Чтобы изменить настройки памяти кучи, отредактируйте файл свойств компонента. Например, для Message Processor измените файл /opt/apigee/customer/application/message-processor.properties.

Если файла message-processor.properties не существует или если соответствующий файл .properties для какого-либо компонента Edge отсутствует, создайте его и измените владельца файла на пользователя apigee, как показано в следующем примере:

chown apigee:apigee /opt/apigee/customer/application/message-processor.properties

Если компонент установлен на нескольких машинах, например на Message Processor, вам нужно изменить файл свойств на всех машинах, на которых размещен компонент.

В таблице ниже перечислены свойства, которые можно изменить, чтобы задать размер кучи.

Свойство Описание
bin_setenv_min_mem

Минимальный размер кучи. Значение по умолчанию зависит от значений, указанных в разделе Рекомендуемые размеры памяти кучи по умолчанию.

Эта настройка соответствует параметру -Xms в Java.

bin_setenv_max_mem

Максимальный размер кучи. Значение по умолчанию зависит от значений, указанных в разделе Рекомендуемые размеры памяти кучи по умолчанию.

Эта настройка соответствует параметру -Xmx в Java.

bin_setenv_meta_space_size

Размер метаданных курса по умолчанию. Значение по умолчанию – значение параметра bin_setenv_max_permsize, которое по умолчанию составляет 128 МБ. В Message Processor Apigee рекомендует установить значение 256 или 512 МБ в зависимости от трафика.

Эта настройка соответствует параметру -XX:MetaspaceSize в Java.

При задании свойств размера кучи в узле используйте суффикс "m", чтобы указать мегабайты, как показано в следующем примере:

bin_setenv_min_mem=4500m
bin_setenv_max_mem=4500m
bin_setenv_meta_space_size=1024m

После того как вы зададите значения в файле свойств, перезапустите компонент:

/opt/apigee/apigee-service/bin/apigee-service component restart

Пример:

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Как изменить другие свойства JVM

Для настроек Java, не контролируемых перечисленными выше свойствами, можно также задать следующие параметры в соответствующем файле свойств для любого компонента Edge:

  • bin_setenv_ext_jvm_opts: задает любое свойство Java, не указанное в других свойствах. Пример:
    bin_setenv_ext_jvm_opts=-XX:MaxGCPauseMillis=500

    Однако не используйте bin_setenv_ext_jvm_opts, чтобы задать -Xms, -Xmx или -XX:MetaspaceSize, поскольку эти значения контролируются перечисленными выше свойствами.

Дополнительные советы по настройке памяти для компонентов частного облака можно найти в этой статье на форумах Edge.