שגיאה בעיבוד העדכונים

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

תיאור הבעיה

פריסה של גרסאות קודמות של שרת proxy ל-API דרך ממשק המשתמש של Edge או הקריאות ל-Edge management API נכשלה עם שגיאה "Unexpected error occurred while processing the updates".

הודעות שגיאה

Error in deployment for environment sit.

The revision is deployed and traffic can flow, but flow may be impared. com.apigee.kernel.exceptions.spi.UncheckedException{ code = messaging.runtime.UpdateFailed, message = Unexpected error occurred while processing the updates, associated contexts = []}

סיבות אפשריות

יכולות להיות הרבה סיבות שונות לשגיאה הזו. הנה כמה סיבות לדוגמה:

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

שלבים נפוצים שאפשר לנסות ראשונים

  1. בודקים אם יש שגיאות פריסה או דוח קריסות חריג במעבד ההודעות יומן /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log
  2. בדרך כלל רואים דוח קריסות שמספק מידע על הסיבה לפריסה שגיאה. חשוב לקרוא את דוח הקריסות בקפידה כדי להבין מה הסיבה.

אין זיכרון פנוי

אבחון

הערה: רק משתמשי Edge בענן הפרטי יכולים לבצע את השלבים הבאים. אם נמצאים ב-Edge Public Cloud, צריך לפנות לתמיכה של Apigee.

  1. יכול להיות שיופיע חריג דומה לזה שמופיע ביומן מעבד ההודעות. /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log כפי שמוצג איור למטה:
    Apigee-Main-4 ERROR BOOTSTRAP - RuntimeConfigurationServiceImpl.dispatchToListeners() : RuntimeConfigurationServiceImpl.dispatchToListeners : Error occurred while dispatching the request DeployEvent{organization=myorg', application='person-credentials-api', applicationRevision='275', deploymentSpec=basepath=/;env=dev;, deploymentID=null} to com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener@5db88cb8
    com.apigee.kernel.exceptions.spi.UncheckedException: Unexpected error occurred while processing the updates
            at com.apigee.entities.AbstractConfigurator.throwUncheckedException(AbstractConfigurator.java:280) ~[config-entities-1.0.0.jar:na]
            at com.apigee.messaging.configuration.MessageProcessorServiceImpl.configure(MessageProcessorServiceImpl.java:665) ~[message-processor-1.0.0.jar:na]
            at com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener.configureMessageProcessorService(MessageProcessorBootstrapListener.java:54) ~[application-bootstrap-1.0.0.jar:na]
            at com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener.deploy(MessageProcessorBootstrapListener.java:29) ~[application-bootstrap-1.0.0.jar:na]
            …<snipped>
            at com.apigee.application.bootstrap.proto.RuntimeConfig_ConfigRPCService_BlockingSkeleton$1.run(RuntimeConfig_ConfigRPCService_BlockingSkeleton.java:38) [application-bootstrap-1.0.0.jar:na]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_75]
            at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_75]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_75]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_75]
            at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]
    Caused by: java.lang.OutOfMemoryError: Java heap space
  2. ההודעה Caused על ידי: Java.lang.OutofMemoryError: Java Heap Space מציין שנגמר המקום של מעבד ההודעות של Java Heap.

רזולוציה

הערה: רק משתמשי Edge בענן הפרטי יכולים לבצע את השלבים הבאים. אם נמצאים ב-Edge Public Cloud, צריך לפנות לתמיכה של Apigee.

הגדלת נפח הערימה המקסימלי של Java במעבדי ההודעות.

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

  1. קובעים את כמות הזיכרון שבה ניתן להגדיל את שטח הערימה של Java:
    1. בודקים את הערך הנוכחי שהוגדר לשטח הערימה המקסימלי, max_mem בקובץ /opt/apigee/edge-message-processor/bin/setenv.sh
    2. מקבלים את MemTotal (נפח ה-RAM הכולל לשימוש), MemFree (כמות ה-RAM הפיזי שנותרה שלא נוצלה במערכת) באמצעות הפקודה /proc/meminfo במערכת.
      1. יש לוודא שהמידע שלמעלה כולל את הזיכרון שצורך כל תהליך אחר כמו Edge Router וכו' שקיימים באותה מערכת.
      2. על סמך המידע שלמעלה, קובעים מה גודל נפח הערימה של Java במצב מעבד הודעות.
      3. לדוגמה, נפח הערימה המקסימלי הנוכחי במעבד ההודעות הוא 1,024MB. נפח MemTotal הוא 8GB (8192MB), MemFree הוא 5GB (5120MB), ואז אפשר להגדיל את הנפח המקסימלי של Java נפח ערימה של 3GB (3072MB).
      4. אם דרושה עזרה כדי לקבוע בכמה להגדיל את שטח הערימה של Java, לפנות לתמיכה של Apigee.
  2. יוצרים את הקובץ הבא, אם הוא עדיין לא קיים:
    /opt/apigee/customer/application/message-processor.properties
  3. מוסיפים את השורה הבאה בקובץ עם הגדרת הערימה המוגדלת (לדוגמה, 3072M):
    bin_setenv_max_mem=3072m
  4. שומרים את הקובץ.
  5. מפעילים מחדש את מעבד ההודעות:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. אם יש לכם יותר ממעבד הודעות אחד, חוזרים על השלבים 3 עד 6 בכל מעבדי הודעות.

אם הבעיה נמשכת, צריך לפנות אל Apigee תמיכה.

שגיאה בחבילת ה-Proxy ל-API

אם יש שגיאות במדיניות כלשהי שנעשה בה שימוש בשרת ה-proxy של ה-API, הפריסה נכשלים עם השגיאה "Unexpected error occurred while processing the updates".

לדוגמה, אפשר לראות כאן פוסט לקהילה.

אבחון

הערה: רק משתמשי Edge בענן הפרטי יכולים לבצע את השלבים הבאים. אם נמצאים ב-Edge Public Cloud, צריך לפנות לתמיכה של Apigee.

  1. בודקים ביומנים של מעבד ההודעות כדי לאתר חריגות או שגיאות שקשורות לשרת ה-proxy ל-API בפריסה גמישה. השגיאה אמורה לספק מידע על מה שצריך לשנות בשרת ה-proxy ל-API כדי לטפל בבעיה.
  2. אם לא מופיעות הודעות שגיאה ביומנים של מעבד ההודעות, צריך לבדוק את ההבדלים בגרסה של ה-proxy ל-API. אם גרסאות ישנות יותר נפרסות ללא בעיה, יש לבדוק איזה קוד בוצעו שינויים.

רזולוציה

  1. כדי לטפל בבעיה, צריך לבצע את השינויים הנדרשים בחבילת ה-proxy ל-API.
  2. מבטלים את כל השינויים בקוד בשרת ה-proxy של ה-API שהיו בעייתיים בפריסה.

אם הבעיה נמשכת, יש לפנות אל התמיכה של Apigee סיוע נוסף.