حدث خطأ أثناء الوصول إلى مخزن البيانات

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

المشكلة

فشل نشر مراجعات خادم وكيل واجهة برمجة التطبيقات عبر واجهة مستخدم Edge أو طلب واجهة برمجة التطبيقات لإدارة Edge مع خطأ "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. السبب التفاصيل من أجل
    مشكلة في الاتصال بالشبكة بين "معالج الرسائل" و"كاساندرا" فشل الاتصال بين معالج الرسائل وكاساندرا بسبب الشبكة مشكلات الاتصال أو قواعد جدار الحماية. مستخدمو Edge Private Cloud
    أخطاء النشر بسبب "كاساندرا" عمليات إعادة التشغيل لم تكن عُقد Cassandra متاحة لأنّه تمت إعادة تشغيلها كجزء من سلسلة الإجراءات. الصيانة. مستخدمو Edge Private Cloud
    ارتفاع كبير في وقت استجابة طلب القراءة في Cassandra إذا كانت عُقدة كاساندرا تُجري عددًا كبيرًا من القراءات المتزامنة، فعندئذٍ قد تستجيب ببطء بسبب الارتفاع المفاجئ في وقت استجابة طلبات القراءة. مستخدمو Edge Private Cloud
    حزمة خادم وكيل واجهة برمجة التطبيقات التي يزيد حجمها عن 15 ميغابايت تم ضبط Cassandra على عدم السماح بحِزم الخادم الوكيل لواجهة برمجة التطبيقات التي يزيد حجمها عن 15 ميغابايت. الحجم. مستخدمو Edge Private Cloud

    مشكلة في الاتصال بالشبكة بين الرسالة Processor وCassandra

    التشخيص

    ملاحظة: يمكن فقط لمستخدمي Edge Private Cloud تنفيذ الخطوات التالية. في حال حذف إذا كنت تستخدم Edge Public Cloud، يُرجى التواصل مع Apigee Edge Support.

    1. عليك إلغاء نشر الخادم الوكيل لواجهة برمجة التطبيقات وإعادة نشره. إذا كانت هناك مشكلة مؤقتة في الاتصال بين معالج الرسائل وكاسندرا، فقد يختفي الخطأ.

      تحذير: يُرجى عدم إلغاء النشر في حال ظهور أخطاء في عملية الإنتاج. محددة.

    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 بشكل دوري كجزء من الصيانة الروتينية. واجهة برمجة التطبيقات If الخوادم الوكيلة أثناء أعمال صيانة "كاساندرا"، ثم تخفق عمليات النشر بسبب عدم إمكانية الوصول إلى مخزن بيانات كاساندرا.

ملاحظة: يمكن فقط لمستخدمي Edge Private Cloud تنفيذ الخطوات التالية. إذا كنت على Edge Public Cloud، يُرجى التواصل مع Apigee Edge Support.

التشخيص

  1. تحقق مما إذا كانت عُقد Cassandra قد تمت إعادة تشغيلها أثناء وقت النشر.يمكن من خلال التحقق من سجل Cassandra أو أحدث سجلات وقت بدء التشغيل لعقدة Cassandra:

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

الدقة

  1. تأكَّد من أنّ "كاساندرا" تعمل بشكل سليم.
  2. تحقق مما إذا كانت معالجات الرسائل قادرة على الاتصال بمخزن بيانات Cassandra على المنفذ 9042 9160.

ارتفاع كبير في وقت استجابة طلب القراءة في "كاساندرا"

يعتمد عدد كبير من القراءات على Cassandra على حالات الاستخدام الفردية وأنماط حركة المرور. على الخوادم الوكيلة التي تتضمن سياسات تتطلب إذن الوصول للقراءة من "كاساندرا".

على سبيل المثال، إذا تم استدعاء نوع منح GET لتحديث_الرمز المميّز لسياسات OAuth، يرتبط رمز التحديث العديد من رموز الدخول، فقد يؤدي ذلك إلى زيادة عدد من كاساندرا. قد يتسبب ذلك في زيادة وقت استجابة طلب القراءة في Cassandra.

التشخيص

ملاحظة: يمكن فقط لمستخدمي Edge Private Cloud تنفيذ الخطوات التالية. إذا كنت على Edge Public Cloud، يُرجى التواصل مع Apigee Edge Support.

  1. إذا كنت قد ثبت لوحة معلومات المراقبة التجريبية، فاطلع على لوحة معلومات Cassandra، مراجعة "طلبات القراءة" مخططًا لفترة المشكلة. راجع أيضًا مخطط "قراءة في وقت الاستجابة".
  2. بدلاً من ذلك، يمكنك استخدام الأمر nodetool cfstats للتحقّق من طلبات القراءة وقراءة أوقات الاستجابة. راجع كاساندرا الوثائقي للحصول على مزيد من التفاصيل حول استخدام هذا الأمر.

الدقة

ملاحظة: يمكن فقط لمستخدمي Edge Private Cloud تنفيذ الخطوات التالية. إذا كنت على Edge Public Cloud، يُرجى التواصل مع Apigee Edge Support.

  1. جرِّب النشر مرة أخرى بعد عودة أداء "كاساندرا" إلى طبيعته. تأكد من أن جميع يُرجى العِلم أنّ نغمة "كاساندرا" طبيعية.
  2. (اختياري) أعِد تشغيل معالجات الرسائل للتأكّد من إمكانية الاتصال. التأسيس.
  3. للحصول على حل طويل المدى، راجِع أنماط زيارات واجهة برمجة التطبيقات التي قد تساهم في ذلك. أعلى في مخزن بيانات كاساندرا. يُرجى التواصل مع فريق دعم Apigee Edge للحصول على مساعدة في تحديد هذه المشكلة وحلّها.
  4. إذا كانت عُقد Cassandra الحالية غير كافية للتعامل مع حركة البيانات الواردة، فعندئذ إما زيادة سعة الأجهزة أو عدد عُقد مخزن بيانات Cassandra بشكل مناسب.

واجهة برمجة التطبيقات حزمة الخادم الوكيل أكبر من 15 ميغابايت

يتم تقييد حجم حِزم الخادم الوكيل لواجهة برمجة التطبيقات بحجم 15 ميغابايت على Cassandra. إذا زاد حجم واجهة برمجة التطبيقات حزمة الخادم الوكيل أكبر من 15 ميغابايت، ستظهر لك رسالة "حدث خطأ أثناء الدخول إلى مخزن البيانات" عندما تريد محاولة نشر الخادم الوكيل لواجهة برمجة التطبيقات.

التشخيص

ملاحظة: يمكن فقط لمستخدمي Edge Private Cloud تنفيذ الخطوات التالية. إذا كنت على Edge Public Cloud، يُرجى التواصل مع Apigee Edge Support.

  1. التحقق من سجلات معالج الرسائل (/opt/apigee/var/log/edge-message-processor/logs/system.log) ومعرفة ما إذا كان هناك حدوث أي أخطاء أثناء نشر خادم وكيل واجهة برمجة التطبيقات المحدد.
  2. في حال ظهور خطأ مشابه للخطأ الموضّح في الشكل أدناه، سيظهر خطأ النشر لأن حجم حزمة الخادم الوكيل لواجهة برمجة التطبيقات هو > 15 ميغابايت
    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>
    

الدقة

ستكون حزمة الخادم الوكيل لواجهة برمجة التطبيقات كبيرة في حال وجود عدد كبير جدًا من ملفات الموارد. استخدِم ما يلي: حلول لمعالجة هذه المشكلة:

الحل 1: نقل ملفات الموارد إلى مستوى البيئة أو المؤسسة

  1. نقل أي من ملفات الموارد، مثل ملفات ووحدات النصوص البرمجية NodeJS أو ملفات JavaScript ملفات JAR على مستوى البيئة أو المؤسسة. لمزيد من المعلومات حول ملفات الموارد، راجع مستندات Edge
  2. انشر الخادم الوكيل لواجهة برمجة التطبيقات وتحقَّق مما إذا كان الخطأ قد اختفى.

في حال استمرار المشكلة أو عدم تمكّنك من نقل ملفات الموارد إلى بيئة أو مؤسسة المستوى لسبب ما، ثم قم بتطبيق الحل رقم 2.

الحل 2: زيادة حجم حزمة الخادم الوكيل لواجهة برمجة التطبيقات على Cassandra

ملاحظة: يمكن فقط لمستخدمي Edge Private Cloud تنفيذ الخطوات التالية. إذا كنت على Edge Public Cloud، يُرجى التواصل مع Apigee Edge Support.

اتّبِع الخطوات التالية لزيادة حجم إطار التوفير الخاص بسمة "كاساندرا" حجم النقل، الذي يتحكم في الحد الأقصى لحجم حزمة خادم وكيل واجهة برمجة التطبيقات المسموح بها في الحد:

  1. أنشئ الملف التالي، إذا لم يكن موجودًا:
    /opt/apigee/customer/application/cassandra.properties
    
  2. أضف السطر التالي إلى الملف، مع استبدال <size> مع إعداد الحجم المطلوب الحزمة الكبيرة:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
    
  3. أعِد تشغيل كاساندرا:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  4. كرر الخطوات من 1 إلى 3 على جميع عُقد كاساندرا في المجموعة العنقودية.

في حال استمرار المشكلة، يُرجى التواصل مع فريق دعم Apigee Edge.