504 זמן קצוב לתפוגה של שער מהשרת העורפי

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

תיאור הבעיה

אפליקציית הלקוח מקבלת קוד סטטוס HTTP 504 עם ההודעה "זמן קצוב לתפוגה של שער" בתגובה לקריאות ל-API.

תגובת השגיאה הזו מציינת שהלקוח לא קיבל תגובה בזמן מ-Apigee Edge או משרת הקצה העורפי במהלך הביצוע של קריאה ל-API.

הודעת שגיאה

אפליקציית הלקוח מקבלת את קוד התגובה הבא:

HTTP/1.1 504 Gateway Timeout

יכול להיות שאחרי הקוד הזה תופיע הודעת שגיאה שדומה לזו:

<html>
<head><title>504 Gateway Timeout</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Timeout</h1></center>
</body>
</html>

מה גורם להשבתה של השער?

הנתיב הטיפוסי לבקשת API שבוצעה דרך Apigee Edge הוא לקוח -> נתב -> מעבד הודעות -> שרת קצה עורפי כפי שמוצג באיור למטה:

נתיב בקשת API

אפליקציות הלקוח, הנתבים ומעבדי ההודעות מוגדרים עם ערכי זמן קצוב לתפוגה שעומדים בדרישות. Apigee Edge מצפה לתגובה לכל בקשת API בתקופת זמן מסוימת לפי הערכים של הזמן הקצוב לתפוגה. אם התשובה לא מתקבלת במהלך פרק הזמן שצוין, מוחזרת תגובה 'זמן קצוב לתפוגה של שער 504'.

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

ב-Apigee Edge, הסיבה הטיפוסית לתגובה של שרת הקצה העורפי לזמן קצוב לתפוגה של 504 Gateway היא:

הסיבה תיאור הוראות לפתרון בעיות עבור
שרת הקצה העורפי מגיב עם הזמן הקצוב לתפוגה של שער 504 תם הזמן הקצוב לתפוגה של שרת הקצה העורפי ומחזיר תגובת זמן קצוב לתפוגה של 504 Gateway למעבד ההודעות. משתמשי Edge פרטיים וציבוריים בענן

שרת הקצה העורפי מגיב עם הזמן הקצוב לתפוגה של שער 504

שרת הקצה העורפי עשוי להגיב עם קוד תגובת HTTP של '504 Gateway' לזמן קצוב לתפוגה.

אבחון

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

הליך מס' 1: שימוש במעקב (משתמשים בענן פרטי וציבורי)

  1. מפעילים מעקב בממשק המשתמש של Apigee עבור ה-API המושפע.
  2. שליחת בקשה לשרת הקצה העורפי.
  3. אם בבקשת ה-API שנכשלה מופיעה תגובה 504 משרת הקצה העורפי במעקב, הסיבה לזמן הקצוב לתפוגה של 504 Gateway היא שרת הקצה העורפי.
  4. כדי לקבוע את זמן התגובה, לוחצים על השלב תגובה שהתקבלה משרת היעד ב'מעקב'. בדוגמה המוצגת, הזמן שחלף הוא 60004 אלפיות השנייה:

    פרטי השלב מממשק המשתמש

    הקטע 'פרטי השלב' כולל מידע נוסף:

    • היא מדגישה את התגובה שהתקבלה משרת הקצה העורפי תם הזמן הקצוב לתפוגה של שער 504.
    • בקטע תוכן התגובה מוצג גוף התגובה המלא של השרת בקצה העורפי. כפי שצוין קודם לכן, הפורמט והתוכן של המטען הייעודי (payload) של התגובה עשויים להשתנות בהתאם להטמעה של שרת הקצה העורפי.
    • בקטע כותרת תגובה > שרת עשוי להופיע מקור התגובה.
  5. כדי להציג את נתוני Analytics ולאשר את האבחון, לוחצים על השלב נתוני Analytics שנרשמו בקטע 'מעקב', כפי שמוצג באיור הבא:

    פרטי ניתוח מתוך נתוני המעקב

    בקטע כותרות התגובה בפרטי השלב מוצגים הערכים של X-Apigee-fault-code ושל X-Apigee-fault-source, כפי שמוצג באיור הבא:

    פרטי השלב של ניתוח הנתונים מממשק המשתמש

    אם השדות האלה מכילים את הערכים שמופיעים בטבלה שלמטה, התגובה לשגיאה 504 תגיע משרת הקצה העורפי:

    כותרות תגובה ערך
    X-Apigee-fault-source יעד
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  6. בודקים אם יש שרשור של שרת proxy. כדי לבדוק אם שרת הקצה העורפי מפעיל שרת proxy אחר ב-Apigee, צריך לבצע את השלבים הבאים:
    1. חוזרים לשלב Request send to target server (שליחת בקשה לשרת יעד) ולוחצים על הלחצן Show Curl (הצגת Curl) כדי להציג את כתובת האימייל החלופית של שרת הקצה העורפי.
    2. אם הכינוי של השרת העורפי מפנה לכינוי מארח וירטואלי, מתבצע שרשור של שרת proxy. יש לחזור על השלבים שלמעלה עבור כל שרת proxy משורשר כדי לאבחן את הסיבה לתגובת השגיאה 'תם הזמן הקצוב לתפוגה של שער 504'. המדריך הזה מאפשר לאבחן 504 חסימות זמניות של השער המתרחשות בשרתי proxy בשרשרת בשלבים אחרים של מחזור הבקשה/התגובה.
    3. אם הכינוי של שרת הקצה העורפי מפנה לשרת הקצה העורפי, ממשיכים לאפשרות רזולוציה.

תהליך מס' 2: הפעלה ישירה של ה-API של שרת הקצה העורפי (למשתמשי ענן ציבורי ופרטי ענן)

צריך להפעיל את השרת העורפי ישירות כדי לאשר את אותה התנהגות של תגובה לזמן קצוב לתפוגה של 504 Gateway, שזוהתה כשהבקשה נשלחת דרך Apigee Edge.

  1. צריך לוודא שבבקשה מופיעים כל הכותרות, הפרמטרים של השאילתה ופרטי הכניסה הנדרשים כדי להעביר לשרת הקצה העורפי.
  2. אם השירות לקצה העורפי נגיש לציבור, אפשר להשתמש בפקודה curl, ב-Postman או בכל לקוח REST אחר ולהפעיל ישירות את ה-API של שרת הקצה העורפי.
  3. אם אפשר לגשת לשרת הקצה העורפי רק דרך מעבדי ההודעות, צריך להשתמש בפקודה curl, ב-Postman או בכל לקוח REST אחר כדי להפעיל את ה-API של שרת הקצה העורפי ישירות ממעבד ההודעות.
  4. אם השירות לקצה העורפי מחזיר תגובת זמן קצוב לתפוגה של שער 504, ממשיכים לשלב פתרון.

תהליך מס' 3: בדיקת יומני הגישה של NGINX (רק למשתמשים פרטיים בענן)

יומני הגישה של NGINX יכולים לעזור לקבוע אם התגובה לשגיאה 504 נשלחה על ידי שרת הקצה העורפי. הדבר שימושי במיוחד אם הבעיה התרחשה בעבר, לא מ המוצגים לסירוגין או שלא ניתן לתעד אותה ב-Trace. כדי לבדוק את יומני הגישה של NGINX, צריך לפעול לפי השלבים הבאים:

  1. מציגים את יומני הגישה של NGINX באמצעות הפקודה הזו:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. בודקים אם התקבלו תגובות לשגיאות 504 עבור שרת ה-API המושפע. אפשר לבדוק תקופת זמן ספציפית אם הבעיה התרחשה בעבר, או לברר אם בקשות עדיין נכשלות בתגובה לשגיאה 504.
  3. אם מתקבלות תגובות לשגיאה 504, צריך לבדוק אם מקור התגובה לשגיאה הוא שרת הקצה העורפי.
  4. באיור הבא מוצגת דוגמה לרשומה ביומן NGINX שמוצגת בה תגובה לשגיאה 504 שנגרמה על ידי שרת היעד:

    יומני nginx לדוגמה

    אם השדות X-Apigee-fault-source ו-X-Apigee-fault-code מכילים את הערכים שמופיעים בטבלה שלמטה, המקור של תגובת 504 הוא שרת הקצה העורפי:

    כותרות תגובה ערך
    X-Apigee-fault-source יעד
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  5. בודקים את שרת ה-proxy המושפע של ה-API כדי לבדוק אם יש שרשור proxy כלומר, נקודת הקצה של השרת העורפי/נקודת הקצה (endpoint) מפעילה שרת proxy אחר ב-Apigee. אם שרת ה-API של שרת ה-proxy משתמש בשרשור שרת proxy , צריך לחזור על השלבים שלמעלה לכל שרת proxy משורשר כדי לאבחן את הסיבה לשגיאה של שגיאת הזמן הקצוב לתפוגה של 504 ב- Gateway. המדריך הזה מאפשר לאבחן 504 חסימות זמניות של השער המתרחשות בשרתי proxy בשרשרת בשלבים אחרים.
  6. אם לא הוגדרה שרשור של שרת proxy, והתגובה השגיאה 504 מגיעה משרת הקצה העורפי, ממשיכים לשלב פתרון.

הליך מס' 4: שימוש ב-API Monitoring (רק למשתמשים ב-Public Cloud)

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

שלב תרחיש לדוגמה שמדגים איך לפתור בעיות של 5xx בממשקי ה-API באמצעות API Monitoring. לדוגמה, אפשר להגדיר התראה שתישלח לאדמינים כאשר המספר של קודי הסטטוס 504 חורג מסף מסוים.

רזולוציה

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

איסוף פרטי אבחון

אם הבעיה נמשכת, כדאי לשתף את פרטי האבחון הבאים עם התמיכה של Apigee.

אם את/ה משתמש/ת ב-Public Cloud, עליך לספק את הפרטים הבאים:

  • שם הארגון
  • שם הסביבה
  • שם שרת proxy ל-API
  • ממלאים את הפקודה curl שמשמשת לשחזור התגובה לשגיאה 504
  • קובץ מעקב עם בקשות API שקיבל תגובה על שגיאת זמן קצוב לתפוגה של 504 Gateway

אם אתם משתמשים בענן פרטי, עליכם לספק את הפרטים הבאים:

  • זוהתה הודעת שגיאה מלאה בבקשות שנכשלו
  • שם הסביבה
  • חבילת שרת proxy ל-API
  • קובץ מעקב עם בקשות API שקיבל את תגובת השגיאה תם הזמן הקצוב לתפוגה של שער 504
  • יומני הגישה של NGINX
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  • יומנים של מעבד ההודעות
    /opt/apigee/var/log/edge-message-processor/logs/system.log