אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
תיאור הבעיה
פריסת תיקונים של proxy ל-API דרך ממשק המשתמש של Edge או קריאות ל-API לניהול Edge נכשלת עם השגיאה 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 = []}סיבות אפשריות
יכולות להיות סיבות שונות לשגיאה הזו. הנה כמה דוגמאות לסיבות:
| הסיבה | פרטים | בשם |
| Out Of Memory | למעבד ההודעות נגמר שטח הערימה של Java, ולכן פריסת ה-proxy ל-API נכשלה. | משתמשים בענן פרטי |
| שגיאה בחבילת proxy ל-API | חבילת proxy ל-API כוללת שגיאות שיכולות לגרום לכשל ב-Deployment (פריסה) של proxy ל-API. | משתמשים בענן פרטי ובענן ציבורי |
שלבים נפוצים שכדאי לנסות קודם
- בודקים אם יש שגיאות פריסה או דוח קריסות במעבד הבקשות
יומן
/opt/apigee/var/log/apigee/edge-message-processor/logs/system.log - בדרך כלל מוצג דוח קריסות שמספק מידע על הסיבה לשגיאת הפריסה. כדאי לקרוא את ה-stack trace בעיון כדי להבין את הסיבה.
אין זיכרון פנוי
אבחון
הערה: רק משתמשי Edge Private Cloud יכולים לבצע את השלבים הבאים. אם אתם משתמשים ב-Edge Public Cloud, אתם יכולים לפנות אל התמיכה של Apigee.
- יכול להיות שתראו חריגה דומה לזו שמופיעה ביומן של Message Processor
/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
- ההודעה Caused by: java.lang.OutofMemoryError: Java Heap space מציינת שמעבד ההודעות לא הצליח להקצות זיכרון בערימה של Java.
רזולוציה
הערה: רק משתמשי Edge Private Cloud יכולים לבצע את השלבים הבאים. אם אתם משתמשים ב-Edge Public Cloud, אתם יכולים לפנות אל התמיכה של Apigee.
הגדלת המרחב המקסימלי של Java Heap במעבדי ההודעות.
הגודל המקסימלי של ה-Heap ב-Java נקבע על ידי המאפיין של ה-JVM -Xmx. כדי להגדיל את נפח ה-Heap של Java במעבדי ההודעות, פועלים לפי השלבים הבאים:
- קובעים את כמות הזיכרון שאפשר להגדיל את נפח ה-heap של Java:
- בודקים את הערך הנוכחי שמוגדר עבור max heap space, max_mem, בקובץ
/opt/apigee/edge-message-processor/bin/setenv.sh - מקבלים את MemTotal (הכמות הכוללת של זיכרון RAM שניתן לשימוש), MemFree
(הכמות של זיכרון RAM פיזי שנשאר ללא שימוש במערכת) באמצעות הפקודה
/proc/meminfo במערכת.
- חשוב לוודא שהמידע שלמעלה כולל את הזיכרון שצורכים תהליכים אחרים כמו Edge Router וכו' שקיימים באותה מערכת.
- בהתבסס על המידע שלמעלה, קובעים בכמה אפשר להגדיל את שטח הערימה של Java עבור מעבד ההודעות.
- לדוגמה, אם שטח הערימה המקסימלי הנוכחי במעבד ההודעות הוא 1,024MB, MemTotal הוא 8GB (8,192MB), MemFree הוא 5GB (5,120MB), אז אפשר להגדיל את שטח הערימה המקסימלי של Java ל-3GB (3,072MB).
- אם אתם צריכים עזרה בקביעת גודל ה-heap space של Java, אתם יכולים לפנות אל התמיכה של Apigee.
- בודקים את הערך הנוכחי שמוגדר עבור max heap space, max_mem, בקובץ
- יוצרים את הקובץ הבא, אם הוא עדיין לא קיים:
/opt/apigee/customer/application/message-processor.properties
- מוסיפים את השורה הבאה לקובץ, עם הגדרת ה-heap המוגדלת (לדוגמה, 3072M):
bin_setenv_max_mem=3072m
- שומרים את הקובץ.
- מפעילים מחדש את מעבד ההודעות:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- אם יש לכם יותר ממעבד הודעות אחד, חוזרים על שלבים 3 עד 6 בכל מעבדי ההודעות.
אם הבעיה נמשכת, אפשר לפנות לתמיכה של Apigee..
שגיאה בחבילת proxy ל-API
אם יש שגיאות באחד מכללי המדיניות שנעשה בהם שימוש ב-proxy ל-API, הפריסה תיכשל עם השגיאה Unexpected error occurred while processing the updates.
לדוגמה, ראו את הפוסט הזה לקהילה.
אבחון
הערה: רק משתמשי Edge Private Cloud יכולים לבצע את השלבים הבאים. אם אתם משתמשים ב-Edge Public Cloud, אתם יכולים לפנות אל התמיכה של Apigee.
- בודקים ביומני Message Processor אם יש חריגים או שגיאות שקשורים לפריסת ה-proxy ל-API. השגיאה אמורה לספק מידע על מה צריך לשנות בחבילת ה-proxy ל-API כדי לפתור את הבעיה.
- אם לא מופיעות הודעות שגיאה ביומני של מעבד בקשות, בודקים את ההבדלים בהיסטוריית הגרסאות של proxy ל-API. אם פריסת גרסאות קודמות לא גורמת לבעיות, כדאי לבדוק אילו שינויים בוצעו בקוד.
רזולוציה
- מבצעים את השינויים הנדרשים בחבילת ה-proxy ל-API כדי לפתור את הבעיה.
- מחזירים את כל השינויים בקוד של ה-API Proxy שגרמו לבעיות בפריסה.
אם הבעיה נמשכת, אפשר לפנות לתמיכה של Apigee כדי לקבל עזרה נוספת.