ตั้งค่าการหมดอายุของแคช L1 ในตัวประมวลผลข้อความ

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 ในโปรแกรมประมวลผลข้อความได้ดังนี้

  1. เปิด ไฟล์การกำหนดค่า /opt/apigee/customer/application/message-processor.properties ในเครื่องมือแก้ไข หากไม่มีไฟล์ ให้สร้างขึ้นมา
  2. ตั้งค่าพร็อพเพอร์ตี้ TTL สูงสุดของ L1 เป็นค่าที่ต้องการ
    conf_cache_max.l1.ttl.in.seconds = 180

    เราขอแนะนำให้ใช้ค่า 180 วินาที

  3. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของ "apigee" ผู้ใช้:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. รีสตาร์ทโปรเซสเซอร์ข้อความดังนี้
    /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 นาที) เพื่อให้การประมวลผลทำงานได้อย่างราบรื่นต่อไป