שגיאת גישה למאגר הנתונים

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

תיאור הבעיה

פריסת גרסאות של שרת proxy ל-API דרך ממשק המשתמש של Edge או הקריאה ל-Edge management API נכשלת. שגיאה "Error while accessing datastore".

הודעות שגיאה

Error in deployment for environment qa.

The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later

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

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

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

    בעיית קישוריות רשת בין הודעות מעבד (Cassandra)

    אבחון

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

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

      אזהרה: אין לבטל את הפריסה אם השגיאות מתרחשות בסביבת הייצור הסביבה.

    2. אם הבעיה נמשכת, צריך לבצע את הקריאה הבאה ל-AP לניהול כדי לבדוק את את מצב הפריסה ולבדוק אם יש שגיאות ברכיבים:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
      

      פלט של סטטוס פריסה לדוגמה, שמציג 'שגיאה בזמן גישה למאגר הנתונים' של מעבדי ההודעות

      {
      "environment" : [ {
      "aPIProxy" : [ {
      "name" : "simple-python",
      "revision" : [ {
      "configuration" : {
      "basePath" : "/",
      "steps" : [ ]
      },
      "name" : "1",
      "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada"
      }, {
      "error" : "Error while accessing datastore;Please retry later",
      "errorCode" : "datastore.ErrorWhileAccessingDataStore",
      "status" : "error",
      "type" : [ "message-processor" ],
      "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3"
      } 
      "state" : "error"
      } 
      
    3. מפעילים מחדש את מעבדי ההודעות שבהם מוצגת שגיאת הפריסה. אם הייתה זמנית ברשת, השגיאה אמורה להיעלם:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. חוזרים על שלב 2 כדי לבדוק אם הפריסה מצליחה במעבד ההודעות בוצעה הפעלה מחדש. אם לא נמצאו שגיאות, זה סימן שהבעיה נפתרה.
    5. בודקים אם מעבד ההודעות יכול להתחבר לכל צומת של Cassandra ביציאה 9042 ו-9160:
      1. אם telnet זמין, משתמשים ב-telnet:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
        
      2. אם telnet לא זמין, משתמשים ב-netcat כדי לבדוק את הקישוריות באופן הבא:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
        
      3. אם מופיעה התשובה "החיבור נדחה" או 'תם פרק הזמן שהוקצב להתחברות', ואז בצוות תפעול הרשת.
    6. אם הבעיה נמשכת, בדקו אם כל אחד מהצמתים של Cassandra מאזין יציאה 9042 ויציאה 9160:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
      
    7. אם צמתים של Cassandra לא מאזינים ביציאה 9042 או 9160, צריך להפעיל מחדש את צמתים ספציפיים של Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
      
    8. אם הבעיה נמשכת, פנו אל צוות תפעול הרשת.

רזולוציה

יש לפנות אל צוות תפעול הרשת כדי למצוא פתרון לבעיה בחיבור לרשת מעבד הודעות ו-Cassandra.

שגיאות פריסה שנובעות מהפעלה מחדש של Cassandra

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

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

אבחון

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

    grep 'shutdown' /opt/apigee/var/log/apigee-cassandra/system.log

רזולוציה

  1. צריך לוודא ש-Cassandra פועלת.
  2. בודקים אם מעבדי ההודעות יכולים להתחבר למאגר הנתונים של Cassandra ביציאה 9042 9160.

עלייה בזמן האחזור של בקשות קריאה ב-Cassandra

מספר גבוה של קריאות על Cassandra תלוי בתרחישים לדוגמה ובדפוסי תנועה ספציפיים בשרתי ה-proxy שמכילים מדיניות שמחייבת גישת קריאה מ-Cassandra.

לדוגמה, אם סוג המענק של GET ל-refresh_token נקרא עבור מדיניות OAuth, והפונקציה אסימון הרענון משויך לאסימוני גישה רבים, אז הדבר עלול לגרום קוראת מקסנדרה. הדבר עלול לגרום לזמן אחזור ארוך יותר של בקשות קריאה ב-Cassandra.

אבחון

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

  1. אם התקנתם את לוח הבקרה של Beta Monitoring, בדקו את לוח הבקרה של Cassandra לעיין ב'בקשות קריאה' התרשים של התקופה שבה הייתה הבעיה. לבדוק גם את התרשים שליד 'קריאה' זמני אחזור של בקשה".
  2. הכלי החלופי לבדיקת בקשות הקריאה ולקריאת זמני האחזור הוא הפקודה nodetool cfstats. ראו קסנדרה תיעוד כדי לקבל פרטים נוספים על השימוש בפקודה הזו.

רזולוציה

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

  1. כדאי לנסות את הפריסה שוב אחרי שהביצועים של Cassandra יחזרו למצב הרגיל. צריך לוודא שהכל צלצול של קסנדרה הוא נורמלי.
  2. (אופציונלי) מבצעים הפעלה מחדש של מעבדי ההודעות כדי לוודא שהקישוריות נוצרה.
  3. כדי למצוא פתרון לטווח ארוך, סקור את דפוסי התנועה ב-API שעשויים לתרום קריאה גבוהה יותר במאגר הנתונים של Cassandra. יש לפנות לתמיכה של Apigee Edge לקבלת עזרה בפתרון הבעיה הזו.
  4. אם הצמתים הקיימים של Cassandra לא מתאימים לטפל בתנועה הנכנסת, אז להגדיל את קיבולת החומרה או את מספר הצמתים של מאגר הנתונים של Cassandra המתאים.

API חבילת ה-proxy גדולה מ-15MB

הגודל של חבילות ה-Proxy ל-API מוגבל ל-15MB ב-Cassandra. אם הגודל של ממשק ה-API חבילת שרת ה-Proxy גדולה מ-15MB, ואז תופיע ההודעה "שגיאה בזמן הגישה למאגר הנתונים" אחרי ש לפרוס את שרת ה-proxy ל-API.

אבחון

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

  1. בדיקת היומנים של מעבד ההודעות (/opt/apigee/var/log/edge-message-processor/logs/system.log) ולבדוק אם יש שאירעו שגיאות במהלך הפריסה של שרת ה-proxy הספציפי ל-API.
  2. אם מופיעה שגיאה הדומה לזו שמוצגת באיור שלמטה, סימן ששגיאת הפריסה הסיבה לכך היא שגודל החבילה של ה-Proxy ל-API הוא > 15 MB.
    2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{}
    com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na]
            at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na]
    ...<snipped>
            Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1]
    ...<snipped>
    

רזולוציה

אם יש יותר מדי קובצי משאבים, חבילת ה-Proxy ל-API תהיה גדולה. צריך להשתמש בהגדרות הבאות פתרונות לבעיה הזו:

פתרון מס' 1: העברת קובצי משאבים לרמת הסביבה או הארגון

  1. מעבירים את קובצי המשאבים, כמו קבצים ומודולים של סקריפט של NodeJS, קובצי JavaScript, קובצי JAR ברמת הסביבה או הארגון. למידע נוסף על קובצי משאבים, אפשר לעיין במאמר מסמכי התיעוד.
  2. פורסים את ה-Proxy ל-API ובודקים אם השגיאה נעלמת.

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

פתרון 2: הגדלת נפח החבילה של שרת ה-proxy ל-API ב-Cassandra

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

יש לפעול לפי השלבים הבאים כדי להגדיל את מסגרת הסכנה של נכס Cassandra גודל התעבורה, שקובע את הגודל המקסימלי של חבילת ה-Proxy ל-API שמותרת קצה:

  1. אם הוא לא קיים, יוצרים את הקובץ הבא:
    /opt/apigee/customer/application/cassandra.properties
    
  2. מוסיפים את השורה הבאה לקובץ, ומחליפים את הערך <size> בהגדרת הגודל הדרושה החבילה הגדולה:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
    
  3. הפעלה מחדש של Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  4. חוזרים על שלבים 1 עד 3 בכל הצמתים של Cassandra באשכול.

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