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

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

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

גודל ברירת מחדל של זיכרון ערימה מומלץ וגודל ברירת המחדל

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

רכיב שם הקובץ של המאפיינים ברירת מחדל
גודל הערימה
מומלץ
גודל הערימה
זמן ריצה
קסנדרה לא רלוונטי הגדרה אוטומטית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. במאמר שינוי גודל הזיכרון של הזיכרון מוסבר איך מגדירים את גודל הערימה.

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

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

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

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

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

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

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

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

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

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

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

מאפיין (property) תיאור
bin_setenv_min_mem

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

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

bin_setenv_max_mem

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

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