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

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

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

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

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

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

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

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

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

‫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 התואם של רכיב Edge כלשהו לא קיים, יוצרים אותו ואז משנים את הבעלות על הקובץ למשתמש "apigee", כמו בדוגמה הבאה:

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

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

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

נכס תיאור
bin_setenv_min_mem

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

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