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