Как настроить сборщик мусора для процессоров сообщений

В Edge для частного облака 4.54.00 (работает на Java 21) процессор сообщений по умолчанию использует сборщик мусора Garbage-First Garbage Collector (G1GC). В этом документе рассказывается, как настроить и проверить параметры сборки мусора в процессоре сообщений.

Как настроить сборщик мусора в процессорах сообщений

В этом разделе описывается процедура настройки альтернативных параметров сборки мусора (GC) в Edge Message Processor. Вы управляете параметрами GC, обновляя свойства GC в Message Processor. Чтобы изменить какое-либо свойство конфигурации, используйте синтаксис токенов, описанный в разделе Как настроить Edge.

Чтобы изменить настройки сборщика мусора в Message Processor, выполните следующие действия:

  1. Проверьте свойство GC
  2. Изменение сборки мусора в Message Processor

Проверьте ресурс GC

Чтобы проверить настроенные свойства GC, выполните следующие действия:

  1. Найдите свойства GC в каталоге с исходными файлами обработчика сообщений /opt/apigee/edge-message-processor/source с помощью следующей команды:
    grep -riE "useG1GC|useZGC|useStringDeduplication" /opt/apigee/edge-message-processor/source
    
  2. Убедитесь, что в выходных данных этой команды показана конфигурация свойств GC для процессора сообщений:
    /opt/apigee/edge-message-processor/source/conf/system.properties:useG1GC={T}conf_system_useG1GC{/T}
    /opt/apigee/edge-message-processor/source/conf/system.properties:useZGC={T}conf_system_useZGC{/T}
    /opt/apigee/edge-message-processor/source/conf/system.properties:useStringDeduplication={T}conf_system_useStringDeduplication{/T}

    Строка между тегами {T}{/T} – это название свойства, которое можно задать в файле .properties процессора сообщений.

Изменение GC в Message Processor

Ниже описано, как изменить настройки GC в процессорах сообщений Apigee.

  1. Откройте файл /opt/apigee/customer/application/message-processor.properties на компьютере, на котором работает обработчик сообщений, в редакторе. Если файла ещё нет, создайте его. Пример:
    vi /opt/apigee/customer/application/message-processor.properties
    
  2. Добавьте нужные строки конфигурации GC в зависимости от целевого профиля:
    • Вариант А. Используйте G1GC в качестве сборщика мусора по умолчанию с некоторыми изменениями:
      conf_system_useG1GC=true
      conf_system_useStringDeduplication=true
      conf_system_g1gc.g1ReservePercent=15
    • Вариант Б. Включите Generational ZGC (необязательно для развертываний с ультранизкой задержкой):
      conf_system_useG1GC=false
      conf_system_useZGC=true
      bin_setenv_max_meta_space_size=1024m
    • Вариант В. Включите общую настройку GC:

      Задайте значение bin_setenv_ext_jvm_opts в файле переопределения компонента .properties (/opt/apigee/customer/application/message-processor.properties), чтобы настроить общие свойства GC, а затем перезапустите компонент. Пример:

      conf_system_useG1GC=false
      conf_system_useZGC=false
      bin_setenv_ext_jvm_opts="-XX:+UseParallelGC"
  3. Сохраните изменения.
  4. Убедитесь, что владельцем этого файла является пользователь apigee. Пример:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Перезапустите процессор сообщений, используя следующую команду:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Если у вас несколько процессоров сообщений, повторите эти шаги для всех процессоров.

Обновление дедупликации строк

По умолчанию в конфигурации G1GC для параметра UseStringDeduplication задано значение true, которое оптимизирует распределение памяти кучи Java, позволяя одинаковым значениям String использовать один массив символов. Чтобы отключить дедупликацию строк, задайте значение conf_system_useStringDeduplication=false в /opt/apigee/customer/application/message-processor.properties и перезапустите обработчик сообщений, как описано в разделе Изменение параметров сборки мусора в обработчиках сообщений.

Проверка конфигурации GC в Message Processor

Чтобы убедиться, что изменения конфигурации GC применены к Message Processor, выполните следующие действия:

  1. Найдите свойство GC в каталоге /opt/apigee/edge-message-processor/conf и убедитесь, что для него задано новое значение. Пример:
    grep -riE "useG1GC|useZGC|g1gc\.|useStringDeduplication" /opt/apigee/edge-message-processor/conf
    
  2. Убедитесь, что в столбце /opt/apigee/edge-message-processor/conf/system.properties указаны заданные вами значения. Например, настройки Apigee Default GC отображаются следующим образом:
    /opt/apigee/edge-message-processor/conf/system.properties:useG1GC=true
    /opt/apigee/edge-message-processor/conf/system.properties:useZGC=false
    /opt/apigee/edge-message-processor/conf/system.properties:g1gc.maxGCPauseMillis=200
    /opt/apigee/edge-message-processor/conf/system.properties:g1gc.initiatingHeapOccupancyPercent=45
    /opt/apigee/edge-message-processor/conf/system.properties:g1gc.g1ReservePercent=15
    /opt/apigee/edge-message-processor/conf/system.properties:useStringDeduplication=true
  3. Убедитесь, что запущенный процесс JVM обработчика сообщений был запущен с ожидаемыми флагами -XX::
    ps -ef | grep edge-message-processor | grep -E "UseG1GC|UseZGC"
    
    • Для Apigee Default G1GC убедитесь, что командная строка содержит: -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=1024m
    • Для Generational ZGC убедитесь, что командная строка содержит: -XX:+UseZGC -XX:+ZGenerational -XX:MaxMetaspaceSize=1024m
  4. Если вам по-прежнему не удается настроить параметры GC, обратитесь в службу поддержки Apigee Edge.

Что дальше?