รูปแบบที่ไม่ควรใช้: ผลกระทบของ KVM ที่ไม่มีอยู่จริงต่อเวลาในการตอบสนอง

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

นโยบายแมปค่าคีย์ (KVM) เป็นคอมโพเนนต์พื้นฐานในการจัดการการกำหนดค่าและค่าแบบไดนามิกภายในระบบ อย่างไรก็ตาม การมีอยู่และการค้นหาคีย์ที่ไม่มีอยู่ใน KVM เหล่านี้อาจส่งผลต่อประสิทธิภาพอย่างมากและทำให้เกิดเวลาในการตอบสนองที่เพิ่มขึ้น

รูปแบบที่ไม่ดี

เมื่อนโยบาย KVM พยายามดึงค่าสำหรับคีย์ที่ไม่มีอยู่ในแผนที่คีย์-ค่า ระบบจะเรียกฐานข้อมูล Cassandra เพิ่มเติม การสื่อสารกับฐานข้อมูลแบ็กเอนด์ที่เพิ่มขึ้นนี้ โดยเฉพาะอย่างยิ่งสำหรับคีย์ที่ไม่มีอยู่ จะใช้ทรัพยากรและเวลามากขึ้น ซึ่งจะทำให้เวลาในการตอบสนองของคำขอโดยรวมเพิ่มขึ้น

ผลกระทบ

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

อาการ

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

ข้อความแสดงข้อผิดพลาด

การวิเคราะห์ไฟล์ system.log แสดงให้เห็นว่ามีข้อผิดพลาดที่เกี่ยวข้องกับ Cassandra เกิดขึ้นซ้ำๆ โดยเฉพาะอย่างยิ่ง ที่เกี่ยวข้องกับการดึงข้อมูลและสถานะของพูลโฮสต์ ข้อความแสดงข้อผิดพลาดที่สำคัญซึ่งพบ ได้แก่
  • ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.get() : Exception while fetching rowKey : [7ccd1062-6e05-4d12-aa86-5c7bf944682d, app_credentials, kms] from column family:{} in keyspace:{}
  • ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.logHostPoolInCaseOfErrors() : Cassandra Host Pool under use - All Hosts: xx.xx.xx.102(xx.xx.xx.102):9160,xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.103(xx.xx.xx.103):9160. Active Hosts: xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.102(xx.xx.xx.102):9160

การวินิจฉัย

การวิเคราะห์ไฟล์ system.log ของเครื่องมือประมวลผลข้อความแสดงให้เห็นค่า L1MissL2Miss ที่เพิ่มขึ้นภายในรายงานเมตริก KVM 5 นาที

เช่น CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]

แนวทางปฏิบัติแนะนำ

เราขอแนะนำให้เพิ่มค่าจำลองสำหรับคีย์ที่ไม่มีอยู่ใน KVM เพื่อลดปัญหานี้ แนวทางนี้จะช่วยลดจำนวนการเรียกไปยัง Cassandra สำหรับคีย์ที่ไม่มีอยู่ ซึ่งจะช่วยปรับปรุงประสิทธิภาพและลดเวลาในการตอบสนอง

อ่านเพิ่มเติม