คุณกำลังดูเอกสารประกอบ 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
สาเหตุที่เป็นไปได้
สาเหตุทั่วไปของปัญหานี้มีดังนี้
-
สาเหตุ รายละเอียด สำหรับ ปัญหาการเชื่อมต่อเครือข่าย ระหว่าง 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
- ยกเลิกการทำให้พร็อกซี API ใช้งานได้และทำให้พร็อกซีใช้งานได้อีกครั้ง หากมีปัญหาการเชื่อมต่อชั่วคราว
ระหว่าง Message Processor กับ Cassandra ข้อผิดพลาดอาจหายไปได้
คำเตือน: อย่ายกเลิกการทำให้ใช้งานได้หากพบข้อผิดพลาดในเวอร์ชันที่ใช้งานจริง ของคุณ
- หากปัญหายังคงอยู่ ให้ใช้การเรียก 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" }
- รีสตาร์ทโปรแกรมประมวลผลข้อความที่แสดงข้อผิดพลาดในการทำให้ใช้งานได้ หากมี
เครือข่ายมีปัญหาชั่วคราว ข้อผิดพลาดดังกล่าวควรหายไปเอง
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- ทำซ้ำขั้นตอนที่ 2 เพื่อดูว่าการติดตั้งใช้งานสำเร็จหรือไม่ในส่วนตัวประมวลผลข้อความที่เคยใช้ รีสตาร์ทแล้ว หากไม่พบข้อผิดพลาด แสดงว่าปัญหาได้รับการแก้ไขแล้ว
- ตรวจสอบว่าเครื่องมือประมวลผลข้อความเชื่อมต่อกับโหนด Cassandra แต่ละโหนดบนพอร์ต 9042 ได้หรือไม่
และ 9160:
- หากมีให้ใช้ telnet ให้ใช้ telnet
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- หาก telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อ ดังนี้
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- หากได้รับการตอบกลับ "การเชื่อมต่อถูกปฏิเสธ" หรือ "หมดเวลาการเชื่อมต่อ" จากนั้นให้มีส่วนร่วม ทีมปฏิบัติการเครือข่ายของคุณ
- หากมีให้ใช้ telnet ให้ใช้ telnet
- ถ้าปัญหายังคงอยู่ ให้ตรวจสอบว่าโหนด Cassandra แต่ละโหนดกำลังฟังฟังก์ชันอยู่หรือไม่
พอร์ต 9042 และพอร์ต 9160
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- หากโหนด Cassandra ไม่รับฟังเสียงจากพอร์ต 9042 หรือ 9160 ให้รีสตาร์ท
โหนด Cassandra ที่เฉพาะเจาะจง:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- หากปัญหายังคงอยู่ ให้ติดต่อทีมปฏิบัติการเครือข่ายของคุณ
- ยกเลิกการทำให้พร็อกซี API ใช้งานได้และทำให้พร็อกซีใช้งานได้อีกครั้ง หากมีปัญหาการเชื่อมต่อชั่วคราว
ระหว่าง Message Processor กับ Cassandra ข้อผิดพลาดอาจหายไปได้
ความละเอียด
ทำงานร่วมกับทีมปฏิบัติการเครือข่ายและแก้ไขปัญหาการเชื่อมต่อเครือข่ายระหว่างวันที่ โปรแกรมประมวลผลข้อความและ Cassandra
ข้อผิดพลาดในการทำให้ใช้งานได้เนื่องจาก Cassandra รีสตาร์ท
โหนด Cassandra มักจะรีสตาร์ทเป็นระยะโดยเป็นส่วนหนึ่งของการบำรุงรักษาตามปกติ หากเป็น API มีการทำให้พร็อกซีใช้งานได้ระหว่างการบำรุงรักษา Cassandra และการติดตั้งใช้งานจะล้มเหลวเนื่องจาก ไม่สามารถเข้าถึงพื้นที่เก็บข้อมูลของ Cassandra
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
การวินิจฉัย
- ตรวจสอบว่าโหนด Cassandra รีสตาร์ทหรือไม่ในระหว่างการทำให้ใช้งานได้
ดำเนินการโดยการตรวจสอบบันทึกของ Cassandra หรือบันทึกเวลาเริ่มต้นล่าสุดของโหนด Cassandra
grep
"shutdown
"/opt/apigee/var/log/apigee-cassandra/system.log
ความละเอียด
- ตรวจสอบว่า Cassandra พร้อมใช้งานแล้ว
- ตรวจสอบว่า Message Processor เชื่อมต่อกับ Datastore ของ Cassandra บนพอร์ต 9042 ได้หรือไม่ และ 9160
เวลาในการตอบสนองคำขอการอ่านที่พุ่งสูงขึ้นใน Cassandra
การอ่านใน Cassandra จำนวนมากจะขึ้นอยู่กับกรณีการใช้งานและรูปแบบการรับส่งข้อมูลของแต่ละบุคคล บนพร็อกซีที่มีนโยบายที่จำเป็นต้องใช้สิทธิ์การอ่านจาก Cassandra
ตัวอย่างเช่น หากมีการเรียกใช้ประเภท GET เพื่อรีเฟรช_token สำหรับนโยบาย OAuth และการเรียก โทเค็นการรีเฟรชเชื่อมโยงกับโทเค็นเพื่อการเข้าถึงจำนวนมาก จึงอาจทำให้มี อ่านจาก Cassandra ซึ่งอาจทำให้เวลาในการตอบสนองคำขออ่านใน Cassandra เพิ่มขึ้น
การวิเคราะห์
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
- หากคุณติดตั้งหน้าแดชบอร์ดการตรวจสอบเวอร์ชันเบต้าแล้ว โปรดดูที่แดชบอร์ด Cassandra และ ตรวจสอบส่วน "คำขออ่าน" ของช่วงเวลาที่เกิดปัญหา และดูแผนภูมิสำหรับ "อ่าน ส่งคำขอเวลาในการตอบสนอง"
- เครื่องมือสำรองในการตรวจสอบคำขอการอ่านและเวลาในการตอบสนองการอ่านคือคำสั่ง
nodetool cfstats
โปรดดู Cassandra เอกสารประกอบเพื่อดูรายละเอียดเพิ่มเติมในการใช้คำสั่งนี้
ความละเอียด
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
- ลองติดตั้งใช้งานอีกครั้งเมื่อประสิทธิภาพของ Cassandra กลับมาเป็นปกติ ตรวจสอบให้แน่ใจว่าช่องทั้งหมด แหวนคาสซานดราเป็นปกติ
- (ไม่บังคับ) รีสตาร์ททีละส่วนบน Message Processor เพื่อให้แน่ใจว่ามีการเชื่อมต่อ แล้ว
- สำหรับโซลูชันในระยะยาว ให้ตรวจสอบรูปแบบการรับส่งข้อมูล API ที่อาจทำให้เกิด การอ่านที่สูงขึ้นในพื้นที่เก็บข้อมูลของ Cassandra โปรดติดต่อทีมสนับสนุนของ Apigee Edge เพื่อขอความช่วยเหลือในการแก้ไขปัญหานี้
- หากโหนด Cassandra ที่มีอยู่ไม่เพียงพอที่จะจัดการการรับส่งข้อมูลขาเข้า เพิ่มความจุของฮาร์ดแวร์หรือจำนวนโหนดพื้นที่เก็บข้อมูลของ Cassandra อย่างเหมาะสม
API แพ็กเกจพร็อกซีมีขนาดใหญ่กว่า 15 MB
ขนาดของแพ็กเกจพร็อกซี API จำกัดอยู่ที่ 15 MB ใน Cassandra ถ้าขนาดของ API แพ็กเกจพร็อกซีมีขนาดใหญ่กว่า 15 MB จากนั้นคุณจะเห็นข้อความ "เกิดข้อผิดพลาดขณะเข้าถึงพื้นที่เก็บข้อมูล" เมื่อคุณ พยายามทำให้พร็อกซี API ใช้งานได้
การวินิจฉัย
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
- ตรวจสอบบันทึกสำหรับโปรแกรมประมวลผลข้อความ
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
) และดูว่ามี มีข้อผิดพลาดเกิดขึ้นระหว่างการทำให้พร็อกซี API ที่ระบุใช้งานได้ - หากคุณเห็นข้อผิดพลาดที่คล้ายกับในรูปด้านล่าง แสดงว่าเป็นข้อผิดพลาดในการติดตั้งใช้งาน
เพราะขนาดกลุ่มพร็อกซี 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: ย้ายไฟล์ทรัพยากรไปยังระดับสภาพแวดล้อมหรือองค์กร
- ย้ายไฟล์ทรัพยากร เช่น ไฟล์และโมดูล NodeJS Script, ไฟล์ JavaScript ไฟล์ JAR ไปยังระดับสภาพแวดล้อมหรือองค์กร โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ทรัพยากรที่ เอกสารประกอบของ Edge
- ทำให้พร็อกซี API ใช้งานได้และดูว่าข้อผิดพลาดหายไปหรือไม่
หากปัญหายังคงอยู่หรือคุณไม่สามารถย้ายไฟล์ทรัพยากรไปยังสภาพแวดล้อมหรือองค์กรได้ ด้วยเหตุผลบางประการ แล้วใช้โซลูชัน #2
โซลูชันที่ 2: เพิ่มขนาดกลุ่มพร็อกซี API ใน Cassandra
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มขนาดของเฟรมมือสองของ Cassandra ขนาดการส่ง ซึ่งควบคุมขนาดสูงสุดของแพ็กเกจพร็อกซี API ที่อนุญาตใน ขอบ:
- สร้างไฟล์ต่อไปนี้หากยังไม่มี
/opt/apigee/customer/application/cassandra.properties
- เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ โดยแทนที่ <size> พร้อมการตั้งค่าขนาดที่จำเป็นสำหรับ
กลุ่มใหญ่ ได้แก่
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- รีสตาร์ท Cassandra ด้วยคำสั่งต่อไปนี้
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- ทำซ้ำขั้นตอนที่ 1 ถึง #3 กับโหนด Cassandra ทั้งหมดในคลัสเตอร์
หากยังคงพบปัญหาอยู่ ให้ติดต่อทีมสนับสนุนของ Apigee Edge