Apigee Edge มีการแคชเพื่อคงข้อมูลไว้ในคำขอต่างๆ เมื่อได้รับข้อมูล API ระบบจะจัดเก็บข้อมูลไว้ในแคชเป็นระยะเวลาสั้นๆ แล้วลบออก ระยะเวลาสูงสุดที่ระบบจะเก็บข้อมูลไว้ก่อนที่จะลบเรียกว่าวันหมดอายุหรือระยะเวลาที่คงอยู่ (TTL) ของแคช แคชแต่ละรายการมี TTL เริ่มต้น แต่ในบางกรณีคุณอาจต้องเปลี่ยนค่า TTL เพื่อปรับปรุงประสิทธิภาพของ API
ประเภทของแคช
ข้อมูล API จะจัดเก็บไว้ในแคช 2 ประเภท ได้แก่
- ระดับ 1 (L1): แคชหน่วยความจำ ซึ่งเข้าถึงได้เร็วกว่าแต่มีความจุพื้นที่เก็บข้อมูลที่พร้อมใช้งานน้อยกว่า
- ระดับ 2 (L2): แคชถาวรในพื้นที่เก็บข้อมูล Cassandra ซึ่งเข้าถึงได้ช้ากว่าแต่มีความจุพื้นที่เก็บข้อมูลมากกว่า
เมื่อรายการข้อมูลในแคช L1 ถึง TTL ของ L1 ระบบจะลบรายการดังกล่าว อย่างไรก็ตาม ระบบจะเก็บสำเนารายการไว้ในแคช L2 (ซึ่งมี TTL นานกว่าแคช L1) ซึ่ง Message Processor อื่นๆ จะยังคงเข้าถึงได้ ดูรายละเอียดเพิ่มเติมเกี่ยวกับแคชได้ที่ระดับแคชในหน่วยความจำและแคชถาวร
Max L1 TTL
ใน Edge for Private Cloud คุณสามารถตั้งค่า TTL สูงสุดของแคช L1 สำหรับ Message Processor แต่ละรายการได้โดยใช้พร็อพเพอร์ตี้ TTL สูงสุดของ L1 (conf_cache_max.l1.ttl.in.seconds)
รายการในแคช L1 จะหมดอายุหลังจากถึงค่า TTL สูงสุดของ L1 และถูกลบ
หมายเหตุ
- โดยค่าเริ่มต้น ระบบจะปิดใช้ TTL สูงสุดของ L1 (โดยมีค่าเป็น
-1) ซึ่งในกรณีนี้ TTL ของรายการในแคช L1 จะกำหนดโดย การตั้งค่าการหมดอายุของนโยบาย PopulateCache (สำหรับทั้งแคช L1 และ L2) - TTL สูงสุดของ L1 จะมีผลก็ต่อเมื่อมีค่าน้อยกว่าการหมดอายุของแคชโดยรวม
การตั้งค่า TTL สูงสุดของ L1
คุณตั้งค่า TTL ระดับ 1 สูงสุดใน Message Processor ได้ดังนี้
- เปิด
ไฟล์การกำหนดค่า
/opt/apigee/customer/application/message-processor.propertiesในเครื่องมือแก้ไข หากไม่มีไฟล์ดังกล่าว ให้สร้างขึ้นมา - ตั้งค่าพร็อพเพอร์ตี้ Max L1 TTL เป็นค่าที่ต้องการ ดังนี้
conf_cache_max.l1.ttl.in.seconds = 180
เราขอแนะนำให้ใช้ค่า
180วินาที - ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้ "apigee"
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- รีสตาร์ท Message Processor โดยทำดังนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
หลักเกณฑ์ในการตั้งค่า TTL ระดับ 1 สูงสุด
เมื่อตั้งค่า TTL ระดับ 1 สูงสุด โปรดคำนึงถึงหลักเกณฑ์ต่อไปนี้
- RPC ไม่พบข้อมูล: หากคุณสังเกตเห็นว่าการเรียกใช้โพรซีเยอร์ระยะไกล (RPC) ไม่พบข้อมูลระหว่าง Message Processor (MP) โดยเฉพาะในศูนย์ข้อมูลหลายแห่ง อาจเป็นไปได้ว่าแคช L1 มีรายการที่ล้าสมัย ซึ่งจะยังคงล้าสมัยจนกว่าจะลบออกจากแคช L1 การตั้งค่า TTL สูงสุดของ L1 เป็นค่าที่ต่ำลงจะบังคับให้นำรายการที่ไม่มีการอัปเดตออก และแทนที่ด้วยค่าใหม่จากแคช L2 เร็วขึ้น
วิธีแก้ไข: ลดconf_cache_max.l1.ttl.in.seconds - ภาระงานที่มากเกินไปใน Casandra: เมื่อคุณตั้งค่า TTL สูงสุดของ L1 รายการแคช L1 จะหมดอายุบ่อยขึ้น ซึ่งจะทำให้ไม่พบแคช L1 มากขึ้นและพบแคช L2 มากขึ้น เนื่องจากแคช L2 จะถูกเรียกใช้บ่อยขึ้น Cassandra จึงต้องรับภาระงานเพิ่มขึ้น
วิธีแก้ไข: เพิ่มconf_cache_max.l1.ttl.in.seconds
ตามกฎทั่วไป ให้ปรับ TTL สูงสุดของ L1 เป็นค่าที่สมดุลกับความถี่ของการพลาด RPC ระหว่าง MP กับภาระงานที่อาจเกิดขึ้นใน Cassandra
เราขอแนะนำให้ตั้งค่า conf_cache_max.l1.ttl.in.seconds เป็นอย่างน้อย 180 วินาที (3 นาที) เพื่อให้การประมวลผลดำเนินไปอย่างราบรื่น