שינוי הגדרות הזיכרון של Java

Edge for Private Cloud גרסה 4.19.01

בהתאם לדרישות התעבורה והעיבוד שלכם, ייתכן שתצטרכו לשנות את גודל זיכרון הערימה או את גודל המטא-נתונים של המחלקה בצמתים שמריצים בהם רכיבי ענן פרטי שמבוסס על Java.

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

גודל ברירת המחדל של זיכרון ערימה (heap) וגדלים מומלצים

בטבלה הבאה מפורטים הגדלים המומלצים של זיכרון ערימה (heap) שמוגדרים כברירת מחדל ב-Java לרכיבי ענן פרטי שמבוסס על Java:

רכיב שם קובץ המאפיינים ברירת מחדל
גודל ערימה (heap size)
מומלץ
גודל ערימה
זמן ריצה
קסנדרה לא רלוונטי מוגדר באופן אוטומטי1 מוגדר באופן אוטומטי1
מעבד בקשות message-processor.properties 512MB 3GB – 6GB 2
נתב router.properties 512MB 512MB
Analytics
שרת Postgres postgres-server.properties 512MB 512MB
שרת Qpid qpid-server.properties 512MB 2GB - 4GB
ניהול
שרת ניהול management-server.properties 512MB 512MB
UI ui.properties 512MB 512MB
OpenLDAP לא רלוונטי אפליקציה מותאמת3 אפליקציה מותאמת3
מטפל בגן חיות zookeeper.properties 2,048MB 2,048MB
הערות

1 Cassandra מחשבת באופן דינמי את גודל הערימה המקסימלי כשהיא מופעלת. נכון לעכשיו, זהו חצי מזיכרון המערכת הכולל, עם 8,192MB לכל היותר. למידע על הגדרת גודל הערימה (heap) אפשר לקרוא את המאמר שינוי גודל זיכרון הערימה.

2 לגבי מעבדי הודעות, ההמלצה של Apigee היא להגדיר את גודל הערימה בין 3GB ל-6GB. צריך להגדיל את הערימה (heap) מעבר ל-6GB רק אחרי ביצוע בדיקות ביצועים.

אם השימוש בערימה (heap) מתקרב למגבלה המקסימלית במהלך בדיקת הביצועים, צריך להגדיל את המגבלה. למידע על הגדרת גודל הערימה (heap) אפשר לקרוא את המאמר שינוי הגודל של זיכרון הערימה.

3 לא כל הרכיבים של הענן הפרטי מוטמעים ב-Java. מאחר שהן לא מבוססות על Java, לאפליקציות שפועלות במקור בפלטפורמת המארח אין גודלי ערימה של Java שניתנים להגדרה. במקום זאת, הן מסתמכות על מערכת המארח לניהול זיכרון.

כדי לקבוע כמה מהזיכרון הכולל של Apigee מומלץ להקצות לרכיבים מבוססי Java בצומת, צריך להוסיף את הערכים המפורטים למעלה לכל רכיב בצומת הזה. לדוגמה, אם הצומת שלך מארח גם את שרתי Postgres וגם את שרת Qpid, Apigee ממליצה שהקצאת הזיכרון המשולבת תהיה בין 2.5GB ל-4.5GB.

כאן תוכלו למצוא רשימה של כל רכיבי החומרה הנדרשים (כמו RAM).

שינוי הגודל של זיכרון הערימה (heap)

כדי לשנות את ההגדרות של זיכרון הערימה, צריך לערוך את קובץ המאפיינים של הרכיב. לדוגמה, עבור מעבד ההודעות, עורכים את הקובץ /opt/apigee/customer/application/message-processor.properties.

אם הקובץ message-processor.properties לא קיים, או אם קובץ ה-.properties המתאים לא קיים לרכיב כלשהו ב-Edge, יוצרים אותו ואז משנים את הבעלות על הקובץ למשתמש ה-"apigee", כפי שניתן לראות בדוגמה הבאה:

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

אם הרכיב מותקן בכמה מכונות, כמו מעבד ההודעות, צריך לערוך את קובץ המאפיינים בכל המחשבים שמארחים את הרכיב.

בטבלה הבאה מפורטים המאפיינים שאפשר לערוך כדי לשנות את הגודל של הערימה:

נכס התיאור
bin_setenv_min_mem

גודל הערימה המינימלי. ברירת המחדל מבוססת על הערכים שמופיעים בקטע ברירת המחדל וגדלים מומלצים של זיכרון ערימה.

ההגדרה הזו תואמת לאפשרות -Xms של Java.

bin_setenv_max_mem

גודל הערימה (heap) המקסימלי. ברירת המחדל מבוססת על הערכים שמופיעים בקטע ברירת המחדל וגדלים מומלצים של זיכרון ערימה.

ההגדרה הזו תואמת לאפשרות -Xmx של Java.

bin_setenv_meta_space_size

גודל ברירת המחדל של המטא-נתונים של הכיתה. ערך ברירת המחדל מוגדר לערך של bin_setenv_max_permsize, שברירת המחדל שלו היא 128MB. במעבד ההודעות, Apigee ממליצה להגדיר את הערך הזה ל-256MB או ל-512MB, בהתאם לתנועת הגולשים.

ההגדרה הזו תואמת לאפשרות -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.