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

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

ลักษณะปัญหา

การทำให้การแก้ไขพร็อกซี API ใช้งานได้ผ่าน Edge UI หรือการเรียก 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 การสื่อสารระหว่าง 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
      

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

      {
      "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 เชื่อมต่อกับพื้นที่เก็บข้อมูล Cassandra บนพอร์ต 9042 และ 9160 ได้หรือไม่

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

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

เช่น หากมีการเรียก GET ไปยังประเภทการให้สิทธิ์refresh_token และโทเค็นการรีเฟรชเชื่อมโยงกับโทเค็นเพื่อการเข้าถึงจำนวนมาก อาจส่งผลให้มีการอ่านจาก 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 กลับมาเป็นปกติ ตรวจสอบว่าทั้งวงแหวน Cassandra เป็นปกติ
  2. (ไม่บังคับ) ดำเนินการรีสตาร์ททีละขั้นในเครื่องมือประมวลผลข้อความเพื่อให้แน่ใจว่ามีการเชื่อมต่อแล้ว
  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, ไฟล์ JavaScript และไฟล์ JAR ไปยังระดับสภาพแวดล้อมหรือองค์กร ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ทรัพยากรได้ที่เอกสารประกอบของ Edge
  2. ทำให้พร็อกซี API ใช้งานได้และดูว่าข้อผิดพลาดหายไปแล้วหรือยัง

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

วิธีแก้ปัญหา #2: เพิ่มขนาดกลุ่มพร็อกซี API ใน Cassandra

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

ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มขนาดของขนาดการส่งเฟรมข้าม ของพร็อพเพอร์ตี้ Cassandra ซึ่งควบคุมขนาดสูงสุดของกลุ่มพร็อกซี API ที่อนุญาตใน Edge

  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