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

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

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

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

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

רכיב שם הקובץ של המאפיינים ברירת מחדל
גודל אשכול
גודל אשכול
מומלץ
זמן ריצה
Cassandra לא רלוונטי מוגדרים באופן אוטומטי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.properties 512MB 512MB
OpenLDAP לא רלוונטי אפליקציה מקורית3 אפליקציה מותאמת3
Zookeeper zookeeper.properties 2,048MB 2,048MB
הערות

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

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

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

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

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

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

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

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

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

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

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

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

נכס תיאור
bin_setenv_min_mem

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

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

bin_setenv_max_mem

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

ההגדרה הזו תואמת לאפשרות -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 שלא נשלטות על ידי המאפיינים שצוינו למעלה, אפשר גם להעביר דגלים או ערכים נוספים של JVM לכל רכיב Edge. קובצי *.properties יקראו על ידי Bash, וצריך להקיף אותם ב-'(מירכאות יחידות) כדי לשמור על תווים מילוליים, או ב-"(מירכאות כפולות) אם אתם צריכים הרחבה של מעטפת.

  • bin_setenv_ext_jvm_opts: הגדרת כל מאפיין Java שלא צוין במאפיינים אחרים. לדוגמה:
    bin_setenv_ext_jvm_opts='-XX:MaxGCPauseMillis=500'

    עם זאת, אין להשתמש ב-bin_setenv_ext_jvm_opts כדי להגדיר את -Xms, ‏ -Xmx או -XX:MetaspaceSize, כי הערכים האלה נשלטים על ידי המאפיינים שמפורטים למעלה.

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