שגיאה של זמן קצוב לתפוגה

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

תיאור הבעיה

פריסת הגרסאות של ה-API של ה-API דרך ממשק המשתמש של Edge או ה-Management API נכשלה בגלל שגיאה של זמן קצוב לתפוגה.

הודעות שגיאה

Click to change deployment status. 
The revision is deployed and traffic can flow, but flow may be impaired. 
Error: Call timed out; either server is down or server is not reachable

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

הסיבות האופייניות לבעיה הזו הן:

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

בעיה בקישוריות הרשת

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

אבחון

  1. משתמשים בקריאה הבאה ל-API לניהול כדי לקבל את סטטוס הפריסה של ה-API הספציפי שמציג את השגיאה:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    פלט לדוגמה שמציג את השגיאה:

    { 
                    "error": "Call timed out; either server is down or server is not reachable", 
                    "status": "error", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "state" : "error"
                    } 
    

    לפי הפלט של הדוגמה שלמעלה, השגיאה אירעה באחד ממעבדי ההודעות עם מזהה ייחודי אוניברסלי (UUID) 'ebbc1078-cbde-4a00-a7db-66a3c1b2b748'.

  2. בהתאם לפלט של סטטוס הפריסה של שרת ה-API של ה-API, נכנסים לכל אחד ממעבדי ההודעות עם מזהה ה-UUID המתאים שהציג את השגיאה, ומבצעים את השלבים הבאים:
    1. בודקים אם מעבד ההודעות מאזין ביציאה 4528:
      netstat -an | grep LISTEN | grep 4528
      

      אם מעבד ההודעות לא מאזין ביציאה 4528, מפעילים מחדש את מעבד ההודעות:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. צריך לבדוק מחדש את סטטוס הפריסה של שרת ה-API של שרת ה-API באמצעות הקריאה ל-API לניהול שמוצגת בשלב 1 למעלה. אם אין שגיאות, סימן שהבעיה נפתרה.
  3. אם הבעיה נמשכת, יש לבדוק את הקישוריות משרת הניהול למעבד ההודעות ביציאה 4528, לפי השלבים הבאים:
    1. אם telnet זמין, משתמשים ב-telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. אם telnet לא זמין, השתמשו ב-netcat כדי לבדוק את הקישוריות באופן הבא:
      nc -vz <MessageProcessor_IP> 4528
      
    3. אם מתקבלת התשובה 'החיבור נדחה' או 'תם הזמן הקצוב לתפוגה של החיבור', צריך לפנות לצוות תפעול הרשת.
  4. בודקים את הקישוריות ממעבד ההודעות לשרת הניהול ביציאה 4526:
    1. אם telnet זמין, משתמשים ב-telnet:
      telnet <management-server-IP> 4526
      
    2. אם telnet לא זמין, השתמשו ב-netcat כדי לבדוק את הקישוריות באופן הבא:
      nc -vz <management-server-IP> 4526 
      
    3. אם מתקבלת התשובה 'החיבור נדחה' או 'תם הזמן הקצוב לתפוגה של החיבור', צרו קשר עם צוות תפעול הרשת.
  5. עובדים עם צוות תפעול הרשת ומבצעים את הפעולות הבאות:
    1. מוודאים שפרוטוקול RPC מופעל גם בשרת הניהול וגם במעבד ההודעות.
    2. צריך להסיר את ההגבלות של חומת האש או כללי האבטחה שהוגדרו בין שרתי הניהול לבין מעבדי ההודעות כדי לאפשר קישוריות ליציאה 4526 בשרת הניהול, ואת הקישוריות משרת הניהול למעבדי ההודעות ביציאה 4528.
  6. בדיקה חוזרת של סטטוס הפריסה (פרטים בשלב 1 למעלה). אם אין שגיאות, סימן שהשגיאה נפתרה.
  7. אם הבעיה נמשכת, צריך לבדוק אם יש בעיה ברשת במעבד ההודעות. אם יש בעיה ברשת, הפעלה מחדש של מעבד ההודעות הספציפי שמציגה את הודעת השגיאה של הזמן הקצוב לתפוגה (בהתאם לפלט של סטטוס הפריסה) עשויה לפתור את הבעיה:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. אם הבעיה נמשכת, יש לבדוק את היומנים של שרת הניהול בכתובת: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    דוגמה לשגיאת 'תם הזמן הקצוב לתפוגה של שיחה' ביומן שרת הניהול

    2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true 
            com.apigee.rpc.RPCException: Call timed out 
            at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] 
            at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] 
            at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79] 
            
    

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

רזולוציה

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

  1. כדי להאריך את הזמן הקצוב לתפוגה של RPC:
    1. יוצרים את הקובץ /opt/apigee/customer/application/management-server.properties במחשב של שרת הניהול, אם הוא עדיין לא קיים.
    2. מוסיפים את השורה הבאה לקובץ הזה:
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      ערך ברירת המחדל של הזמן הקצוב לתפוגה של RPC הוא 10, ומומלץ להגדיל אותו ל-40 שניות. צריך להגדיר אותה כך:

      conf_cluster_rpc.connect.timeout=40
      
    3. יש לוודא שהקובץ הזה הוא בבעלות apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. מפעילים מחדש את שרת הניהול:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
      
    5. אם יש לך יותר משרת ניהול אחד, צריך לחזור על השלבים שלמעלה בכל שרתי הניהול.
    6. פריסת שרת ה-API של Edge בממשק המשתמש של Edge או באמצעות הקריאה ל-Edge Management API. אם שרת ה-proxy של ה-API נפרס ללא בעיות, סימן שהבעיה נפתרה.
  2. אם הבעיה נמשכת, צריך לאסוף את הפקודה tcpdump משרת הניהול וממעבד ההודעות. מפעילים את הפקודה tcpdump בכל אחד מהשרתים, ולאחר מכן מפעילים את הפריסה של שרת ה-API של שרת ה-Proxy מממשק המשתמש או דרך ממשק ה-API לניהול:
    1. מריצים את פקודת tcpdump הבאה משרת הניהול:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. מריצים את פקודת tcpdump הבאה ממעבד ההודעות:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. אפשר לפנות לתמיכה של Apigee Edge כדי לקבל עזרה בניתוח tcpdumps ובפתרון הבעיה לעומק.

חבילת שרת proxy גדולה ל-API

אבחון

  1. צריך לבדוק את הגודל של חבילת ה-API של שרת ה-proxy שבה זוהתה שגיאת הפריסה.
  2. אם הגודל גדול באופן סביר (10MB ומעלה), סביר להניח שמעבד ההודעות יצטרך זמן נוסף כדי להפעיל את שרת ה-API של ה-API.
  3. אם חבילת ה-API של שרת ה-Proxy גדולה מ-15MB, ממשיכים אל חבילת ה-API של שרת ה-Proxy שגדולה מ-15MB.

רזולוציה

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

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

  1. יוצרים את הקובץ /opt/apigee/customer/application/management-server.properties במחשב של שרת הניהול, אם הוא עדיין לא קיים.
  2. מוסיפים את השורה הבאה לקובץ הזה:
    conf_cluster_rpc.connect.timeout=<time in seconds>
    

    ערך ברירת המחדל של הזמן הקצוב לתפוגה של RPC הוא 10, ומומלץ להאריך אותו ל-40 שניות. צריך להגדיר אותה כך:

    conf_cluster_rpc.connect.timeout=40
    
  3. יש לוודא שהקובץ הזה הוא בבעלות apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. מפעילים מחדש את שרת הניהול:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. אם יש לכם יותר משרת ניהול אחד, צריך לחזור על השלבים שלמעלה בכל שרתי הניהול.

אם הבעיה נמשכת, יש לפנות לתמיכה של Apigee Edge לקבלת עזרה נוספת.