เกิดข้อผิดพลาดในการเข้าถึง Datastore

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

ลักษณะปัญหา

การทำให้การแก้ไขพร็อกซี API ใช้งานได้ผ่าน Edge UI หรือการเรียก API การจัดการ 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. สาเหตุ รายละเอียด สำหรับ
    ปัญหาการเชื่อมต่อเครือข่าย ระหว่าง Message Processor กับ Cassandra การสื่อสารล้มเหลวระหว่าง Message Processor และ Cassandra เนื่องจากเครือข่าย ปัญหาการเชื่อมต่อหรือกฎไฟร์วอลล์ ผู้ใช้ Edge Private Cloud
    ข้อผิดพลาดในการทำให้ใช้งานได้เนื่องจาก Cassandra รีสตาร์ท โหนด Cassandra ไม่พร้อมใช้งานเนื่องจากรีสตาร์ทเป็นส่วนหนึ่งของกิจวัตร การบำรุงรักษา ผู้ใช้ Edge Private Cloud
    เวลาในการตอบสนองคำขอการอ่านที่พุ่งสูงขึ้นใน Cassandra ถ้าโหนด Cassandra กำลังทำงานผ่านการอ่านพร้อมกันจำนวนมาก อาจตอบกลับช้าเนื่องจากเวลาในการตอบสนองคำขออ่านที่พุ่งสูงขึ้น ผู้ใช้ Edge Private Cloud
    แพ็กเกจพร็อกซี API ที่มีขนาดใหญ่กว่า 15 MB Cassandra ได้รับการกำหนดค่าให้ไม่อนุญาตแพ็กเกจพร็อกซี API ที่มีขนาดใหญ่กว่า 15 MB ใน ขนาด ผู้ใช้ Edge Private Cloud

    ปัญหาการเชื่อมต่อเครือข่ายระหว่างข้อความ โปรเซสเซอร์และ Cassandra

    การวินิจฉัย

    หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ ถ้า คุณกำลังใช้ Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge

    1. ยกเลิกการทำให้พร็อกซี API ใช้งานได้และทำให้พร็อกซีใช้งานได้อีกครั้ง หากมีปัญหาการเชื่อมต่อชั่วคราว ระหว่าง Message Processor กับ Cassandra ข้อผิดพลาดอาจหายไปได้

      คำเตือน: อย่ายกเลิกการทำให้ใช้งานได้หากพบข้อผิดพลาดในเวอร์ชันที่ใช้งานจริง ของคุณ

    2. หากปัญหายังคงอยู่ ให้ใช้การเรียก AP การจัดการด้านล่างเพื่อตรวจสอบ สถานะการทำให้ใช้งานได้ และตรวจสอบว่ามีข้อผิดพลาดในคอมโพเนนต์ใดๆ หรือไม่
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
      

      ตัวอย่างเอาต์พุตสถานะการทำให้ใช้งานได้ที่แสดงข้อผิดพลาดขณะเข้าถึงพื้นที่เก็บข้อมูลใน 1 ของบริษัท Message Processor

      {
      "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 มีการทำให้พร็อกซีใช้งานได้ระหว่างการบำรุงรักษา Cassandra และการติดตั้งใช้งานจะล้มเหลวเนื่องจาก ไม่สามารถเข้าถึงพื้นที่เก็บข้อมูลของ Cassandra

หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge

การวินิจฉัย

  1. ตรวจสอบว่าโหนด Cassandra รีสตาร์ทหรือไม่ในระหว่างการทำให้ใช้งานได้ ดำเนินการโดยการตรวจสอบบันทึกของ Cassandra หรือบันทึกเวลาเริ่มต้นล่าสุดของโหนด Cassandra

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

ความละเอียด

  1. ตรวจสอบว่า Cassandra พร้อมใช้งานแล้ว
  2. ตรวจสอบว่า Message Processor เชื่อมต่อกับ Datastore ของ Cassandra บนพอร์ต 9042 ได้หรือไม่ และ 9160

เวลาในการตอบสนองคำขอการอ่านที่พุ่งสูงขึ้นใน Cassandra

การอ่านใน Cassandra จำนวนมากจะขึ้นอยู่กับกรณีการใช้งานและรูปแบบการรับส่งข้อมูลของแต่ละบุคคล บนพร็อกซีที่มีนโยบายที่จำเป็นต้องใช้สิทธิ์การอ่านจาก Cassandra

ตัวอย่างเช่น หากมีการเรียกใช้ประเภท GET เพื่อรีเฟรช_token สำหรับนโยบาย OAuth และการเรียก โทเค็นการรีเฟรชเชื่อมโยงกับโทเค็นเพื่อการเข้าถึงจำนวนมาก จึงอาจทำให้มี อ่านจาก Cassandra ซึ่งอาจทำให้เวลาในการตอบสนองคำขออ่านใน Cassandra เพิ่มขึ้น

การวิเคราะห์

หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge

  1. หากคุณติดตั้งหน้าแดชบอร์ดการตรวจสอบเวอร์ชันเบต้าแล้ว โปรดดูที่แดชบอร์ด Cassandra และ ตรวจสอบส่วน "คำขออ่าน" ของช่วงเวลาที่เกิดปัญหา และดูแผนภูมิสำหรับ "อ่าน ส่งคำขอเวลาในการตอบสนอง"
  2. เครื่องมือสำรองในการตรวจสอบคำขอการอ่านและเวลาในการตอบสนองการอ่านคือคำสั่ง nodetool cfstats โปรดดู Cassandra เอกสารประกอบเพื่อดูรายละเอียดเพิ่มเติมในการใช้คำสั่งนี้

ความละเอียด

หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge

  1. ลองติดตั้งใช้งานอีกครั้งเมื่อประสิทธิภาพของ Cassandra กลับมาเป็นปกติ ตรวจสอบให้แน่ใจว่าช่องทั้งหมด แหวนคาสซานดราเป็นปกติ
  2. (ไม่บังคับ) รีสตาร์ททีละส่วนบน Message Processor เพื่อให้แน่ใจว่ามีการเชื่อมต่อ แล้ว
  3. สำหรับโซลูชันในระยะยาว ให้ตรวจสอบรูปแบบการรับส่งข้อมูล API ที่อาจทำให้เกิด การอ่านที่สูงขึ้นในพื้นที่เก็บข้อมูลของ Cassandra โปรดติดต่อทีมสนับสนุนของ Apigee Edge เพื่อขอความช่วยเหลือในการแก้ไขปัญหานี้
  4. หากโหนด Cassandra ที่มีอยู่ไม่เพียงพอที่จะจัดการการรับส่งข้อมูลขาเข้า เพิ่มความจุของฮาร์ดแวร์หรือจำนวนโหนดพื้นที่เก็บข้อมูลของ Cassandra อย่างเหมาะสม

API แพ็กเกจพร็อกซีมีขนาดใหญ่กว่า 15 MB

ขนาดของแพ็กเกจพร็อกซี API จำกัดอยู่ที่ 15 MB ใน Cassandra ถ้าขนาดของ API แพ็กเกจพร็อกซีมีขนาดใหญ่กว่า 15 MB จากนั้นคุณจะเห็นข้อความ "เกิดข้อผิดพลาดขณะเข้าถึงพื้นที่เก็บข้อมูล" เมื่อคุณ พยายามทำให้พร็อกซี API ใช้งานได้

การวินิจฉัย

หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge

  1. ตรวจสอบบันทึกสำหรับโปรแกรมประมวลผลข้อความ (/opt/apigee/var/log/edge-message-processor/logs/system.log) และดูว่ามี มีข้อผิดพลาดเกิดขึ้นระหว่างการทำให้พร็อกซี API ที่ระบุใช้งานได้
  2. หากคุณเห็นข้อผิดพลาดที่คล้ายกับในรูปด้านล่าง แสดงว่าเป็นข้อผิดพลาดในการติดตั้งใช้งาน เพราะขนาดกลุ่มพร็อกซี 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>
    

ความละเอียด

แพ็กเกจพร็อกซี API จะมีขนาดใหญ่หากมีไฟล์ทรัพยากรมากเกินไป ใช้รายการต่อไปนี้ วิธีแก้ไขปัญหานี้

วิธีแก้ไข #1: ย้ายไฟล์ทรัพยากรไปยังระดับสภาพแวดล้อมหรือองค์กร

  1. ย้ายไฟล์ทรัพยากร เช่น ไฟล์และโมดูล NodeJS Script, ไฟล์ JavaScript ไฟล์ JAR ไปยังระดับสภาพแวดล้อมหรือองค์กร โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ทรัพยากรที่ เอกสารประกอบของ Edge
  2. ทำให้พร็อกซี API ใช้งานได้และดูว่าข้อผิดพลาดหายไปหรือไม่

หากปัญหายังคงอยู่หรือคุณไม่สามารถย้ายไฟล์ทรัพยากรไปยังสภาพแวดล้อมหรือองค์กรได้ ด้วยเหตุผลบางประการ แล้วใช้โซลูชัน #2

โซลูชันที่ 2: เพิ่มขนาดกลุ่มพร็อกซี API ใน Cassandra

หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge

ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มขนาดของเฟรมมือสองของ Cassandra ขนาดการส่ง ซึ่งควบคุมขนาดสูงสุดของแพ็กเกจพร็อกซี 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