Konfigurowanie odśmiecania pamięci dla procesorów komunikatów

W Edge dla chmury prywatnej w wersji 4.54.00 (która działa w Javie 21) procesor komunikatów domyślnie używa modułu Garbage-First Garbage Collector (G1GC). W tym dokumencie opisujemy, jak skonfigurować i zweryfikować ustawienia odśmiecania pamięci na procesorze komunikatów.

Dostosowywanie modułu odśmiecania pamięci na procesorach komunikatów

W tej sekcji opisano procedurę konfigurowania alternatywnych ustawień odśmiecania pamięci (GC) na procesorze komunikatów Edge. Parametrami GC zarządzasz, aktualizując właściwości GC na procesorze komunikatów. Aby dostosować dowolną właściwość konfiguracji, użyj składni tokena zdefiniowanej w artykule Konfigurowanie Edge.

Aby zmodyfikować ustawienia GC na procesorach wiadomości, wykonaj te czynności:

  1. Sprawdź właściwość GC.
  2. Zmodyfikuj GC na procesorach komunikatów.

Sprawdzanie właściwości GC

Poniżej opisujemy, jak sprawdzić skonfigurowane właściwości GC:

  1. Wyszukaj właściwości GC w katalogu źródłowym procesora wiadomości /opt/apigee/edge-message-processor/source za pomocą następującego polecenia:
    grep -riE "useG1GC|useZGC|useStringDeduplication" /opt/apigee/edge-message-processor/source
    
  2. Sprawdź, czy dane wyjściowe tego polecenia pokazują konfigurację właściwości czyszczenia pamięci dla procesora komunikatów:
    /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}

    Ciąg znaków między tagami {T}{/T} to nazwa właściwości, którą możesz ustawić w pliku .properties procesora komunikatów.

Modyfikowanie czyszczenia pamięci na procesorach komunikatów

Poniżej opisujemy, jak zmodyfikować ustawienia GC na procesorach wiadomości Apigee:

  1. Otwórz /opt/apigee/customer/application/message-processor.properties plik na maszynie procesora komunikatów w edytorze. Jeśli plik jeszcze nie istnieje, utwórz go. Na przykład:
    vi /opt/apigee/customer/application/message-processor.properties
    
  2. Dodaj odpowiednie wiersze konfiguracji GC na podstawie profilu docelowego:
    • Opcja A: użyj G1GC jako domyślnego modułu odśmiecania pamięci z pewnymi modyfikacjami:
      conf_system_useG1GC=true
      conf_system_useStringDeduplication=true
      conf_system_g1gc.g1ReservePercent=15
    • Opcja B: włącz Generational ZGC (opcjonalnie w przypadku wdrożeń o bardzo niskim opóźnieniu):
      conf_system_useG1GC=false
      conf_system_useZGC=true
      bin_setenv_max_meta_space_size=1024m
    • Opcja C: włącz ogólne ustawienie GC:

      Ustaw bin_setenv_ext_jvm_opts w pliku zastępującym .properties komponentu (/opt/apigee/customer/application/message-processor.properties) , aby skonfigurować dowolne ogólne właściwości GC, a następnie ponownie uruchom komponent. Na przykład:

      conf_system_useG1GC=false
      conf_system_useZGC=false
      bin_setenv_ext_jvm_opts="-XX:+UseParallelGC"
  3. Zapisz zmiany.
  4. Upewnij się, że właścicielem tego pliku właściwości jest użytkownik apigee. Na przykład:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Uruchom ponownie procesor komunikatów za pomocą tego polecenia:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Jeśli masz więcej niż 1 procesor komunikatów, powtórz te czynności na wszystkich procesorach komunikatów.

Aktualizowanie deduplikacji ciągów znaków

Domyślnie konfiguracja G1GC ustawia UseStringDeduplication na true, co optymalizuje alokację pamięci sterty Java, umożliwiając identycznym wartościom String współdzielenie pojedynczej tablicy znaków. Aby wyłączyć deduplikację ciągów znaków, ustaw conf_system_useStringDeduplication=false w /opt/apigee/customer/application/message-processor.properties i ponownie uruchom procesor komunikatów zgodnie z opisem w sekcji Modyfikowanie czyszczenia pamięci na procesorach komunikatów.

Weryfikowanie konfiguracji czyszczenia pamięci na procesorach komunikatów

Aby sprawdzić, czy zmiany konfiguracji GC zostały zastosowane na procesorze wiadomości:

  1. Wyszukaj właściwość GC w /opt/apigee/edge-message-processor/conf katalogu i sprawdź czy została ustawiona na nową wartość. Na przykład:
    grep -riE "useG1GC|useZGC|g1gc\.|useStringDeduplication" /opt/apigee/edge-message-processor/conf
    
  2. Sprawdź, czy /opt/apigee/edge-message-processor/conf/system.properties odzwierciedla nowo skonfigurowane wartości. Na przykład ustawienia Apigee Default GC są wyświetlane w ten sposób:
    /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. Sprawdź, czy uruchomiony proces JVM procesora komunikatów został uruchomiony z oczekiwanymi -XX: flagami:
    ps -ef | grep edge-message-processor | grep -E "UseG1GC|UseZGC"
    
    • W przypadku Apigee Default G1GC sprawdź, czy w wierszu polecenia znajduje się:-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=1024m
    • W przypadku Generational ZGC sprawdź, czy w wierszu polecenia znajduje się: -XX:+UseZGC -XX:+ZGenerational -XX:MaxMetaspaceSize=1024m
  4. Jeśli nadal nie możesz skonfigurować ustawień GC, skontaktuj się z zespołem pomocy Apigee Edge.

Co dalej?