הגדרת תפוגה של מטמון L1 במעבד הודעות

ב-Apigee Edge ניתן לשמור נתונים כדי לשמור על עקביות הנתונים בכל הבקשות. כשנתוני ה-API מתקבלים, הם מאוחסנים במטמון לפרק זמן קצר ואז נמחקים. משך הזמן המקסימלי שבו פיסת נתונים נשמרת לפני המחיקה נקרא expiry, או time-to-live (TTL) של המטמון. לכל מטמון יש TTL כברירת מחדל, אבל במקרים מסוימים יכול להיות שתצטרכו לשנות את ערך ה-TTL כדי לשפר את ביצועי ה-API.

סוגים של מטמון

נתוני ה-API מאוחסנים בשני סוגים של מטמון:

  • רמה 1 (L1): מטמון בזיכרון, שיש לו גישה מהירה יותר אבל קיבולת אחסון נמוכה יותר.
  • רמה 2 (L2): מטמון קבוע במאגר הנתונים של Cassandra, שהגישה אליו איטית יותר אבל יש לו קיבולת אחסון גדולה יותר.

כשרשומת נתונים במטמון L1 מגיעה ל-TTL של L1, היא נמחקת. עם זאת, עותק של הרשומה נשמר במטמון L2 (בעל TTL ארוך יותר מהמטמון של L1), שבו היא עדיין נגישה למעבדי הודעות אחרים. למידע נוסף על מטמון, תוכלו לקרוא את המאמר רמות של זיכרון ומטמון קבוע.

מקסימום L1 TTL

ב-Edge for Private Cloud, אפשר להגדיר את ה-TTL של ה-L1 המקסימלי לכל מעבד הודעות באמצעות מאפיין ה-TTL של Max L1 (conf_cache_max.l1.ttl.in.seconds). תוקף של רשומה במטמון L1 יפוג אחרי שתגיע לערך ה-TTL של ה-L1 המקסימלי ותימחק.

הערות:

  • כברירת מחדל, ה-TTL של Max L1 מושבת (עם הערך -1), ובמקרה כזה ה-TTL של רשומה במטמון L1 נקבע לפי הגדרות התפוגה של המדיניות PopulateCache (למטמון L1 ו-L2 יחד).
  • הערך של Max L1 TTL משפיע רק אם הערך שלו קטן מהערך הכולל של התפוגה הכוללת של המטמון.

הגדרת Max L1 TTL

כך מגדירים את Max L1 TTL במעבד הודעות:

  1. פותחים את קובץ התצורה /opt/apigee/customer/application/message-processor.properties בכלי עריכה. אם הקובץ לא קיים, יוצרים אותו.
  2. מגדירים את מאפיין ה-TTL של Max L1 לערך הרצוי:
    conf_cache_max.l1.ttl.in.seconds = 180

    מומלץ להזין ערך של 180 שניות.

  3. מוודאים שקובץ המאפיינים הוא בבעלות המשתמש ה-API:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. מפעילים מחדש את המעבד של ההודעות:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

הנחיות להגדרת Max L1 TTL

כשמגדירים את Max L1 TTL, חשוב לזכור את ההנחיות הבאות:

  • החמצות ב-RPC: אם שמת לב שהקריאה לשירות מרוחק (RPC) לא מופיעה בין מעבדי ההודעות (MP) — במיוחד במספר מרכזי נתונים — ייתכן שבמטמון L1 יש רשומות לא פעילות, שיישארו לא פעילות עד שיימחקו מהמטמון של L1. הגדרה של Max L1 TTL לערך נמוך יותר מאלצת הסרה של רשומות לא פעילות, והחלפה של הערכים החדשים ממטמון L2 מוקדם יותר.
    הפתרון: הפחתת conf_cache_max.l1.ttl.in.seconds.
  • עומס יתר ב-Casandra: כשמגדירים ערך ל-Max L1 TTL, התוקף של רשומות המטמון L1 יפוג בתדירות גבוהה יותר, ולכן יהיו יותר פספוסים של מטמון L1 והיטים נוספים של מטמון L2. מטמון L2 מקבל פגיעה בתדירות גבוהה יותר, כך ש-Cassandra תגרור עומס גדל.
    הפתרון: הגדלת conf_cache_max.l1.ttl.in.seconds

באופן כללי, צריך לכוונן את Max L1 TTL לערך שמאזן את תדירות ההחמצות של RPC בין MP לבין העומס הפוטנציאלי ב-Cassandra.

כדי שהעיבוד ימשיך לפעול באופן חלק, מומלץ להגדיר את הערך של conf_cache_max.l1.ttl.in.seconds כ-180 שניות (3 דקות) לפחות.