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

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

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

גדלים מומלצים של זיכרון Heap

בטבלה הבאה מפורטים גדלי ברירת המחדל וגדלי הזיכרון המומלצים ב-Java Heap לרכיבי ענן פרטי מבוססי-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
ממשק משתמש חדש של Edge‏ (edge-management-ui) לא רלוונטי אפליקציית נייטיב3 אפליקציית נייטיב3
SymasLDAP לא רלוונטי אפליקציית נייטיב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

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

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

bin_setenv_max_mem

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

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

bin_setenv_meta_space_size

גודל המטא-נתונים של הכיתה שמוגדר כברירת מחדל. ערך ברירת המחדל מוגדר לערך של bin_setenv_max_permsize, שמוגדר כברירת מחדל ל-128MB. במעבד ההודעות, מומלץ להגדיר את הערך הזה ל-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.