הגדרת איסוף האשפה למעבדי בקשות

ב-Edge for Private Cloud 4.54.00 (שפועל ב-Java 21), מעבד ההודעות משתמש כברירת מחדל ב-Garbage-First Garbage Collector ‏ (G1GC). במאמר הזה מוסבר איך להגדיר ולאמת את ההגדרות של איסוף האשפה במעבד הבקשות.

התאמה אישית של מנגנון פינוי הזיכרון במעבדי הבקשות

בקטע הזה מוסבר איך להגדיר הגדרות חלופיות של איסוף אשפה (GC) במעבד הבקשות של Edge. כדי לנהל את הפרמטרים של GC, מעדכנים את מאפייני ה-GC במעבד הבקשות. כדי לשנות מאפיין כלשהו של ההגדרות, משתמשים בתחביר של האסימון שמוגדר במאמר איך מגדירים את Edge.

כדי לשנות את הגדרות ה-GC במעבדי הבקשות:

  1. בדיקת הנכס ב-Google Classroom
  2. שינוי ה-GC במעבדי ההודעות

בדיקת הנכס ב-Google Chat

כך בודקים את מאפייני ה-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 במעבדי הבקשות

בשלבים הבאים מוסבר איך לשנות את הגדרות ה-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 heap על ידי מתן אפשרות לערכי String זהים לשתף מערך תווים יחיד. כדי להשבית את ביטול הכפילויות של מחרוזות, מגדירים את conf_system_useStringDeduplication=false ב-/opt/apigee/customer/application/message-processor.properties ומפעילים מחדש את מעבד הבקשות, כמו שמתואר במאמר שינוי GC במעבדי הבקשות.

אימות הגדרות GC במעבדי הבקשות

כדי לוודא ששינויי התצורה של GC הוחלו על מעבד ההודעות:

  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.

מה השלב הבא?