เวอร์ชันใหม่ทำให้การใช้งานที่เก็บข้อมูลมีความเสถียร "
Extstore อนุญาตให้คุณใช้ SSD/แฟลชไดรฟ์เพื่อขยายขนาดแคช เช่นเดียวกับ RAM พื้นที่เก็บข้อมูลแฟลชจะไม่ถาวรและจะถูกรีเซ็ตเมื่อรีสตาร์ท ขอบเขตของโหมดใหม่คือเพื่อให้แน่ใจว่าการแคชข้อมูลขนาดใหญ่มีประสิทธิภาพ เมื่อใช้ "extstore" คีย์และข้อมูลเมตาจะถูกเก็บไว้ใน RAM เหมือนเมื่อก่อน แต่ข้อมูลขนาดใหญ่ที่เกี่ยวข้องกับคีย์ซึ่งมีขนาดเกินเกณฑ์ที่ตั้งไว้จะถูกเก็บไว้ในที่จัดเก็บข้อมูลภายนอกและมีเพียงตัวชี้เท่านั้นที่ยังคงอยู่ใน RAM
หากคีย์เชื่อมโยงกับข้อมูลขนาดเล็ก Memcached จะทำงานตามปกติ เก็บข้อมูลไว้ในหน่วยความจำ และไม่สามารถเข้าถึงที่จัดเก็บข้อมูลภายนอก หากมีหน่วยความจำว่างจำนวนมาก ข้อมูลที่จำเป็นที่สุดก็สามารถอยู่ในแคชใน RAM เพิ่มเติมได้อย่างสมบูรณ์ (ตัวอย่างเช่น คุณสามารถระบุได้ว่าเฉพาะออบเจ็กต์ที่มีขนาดใหญ่กว่า 1024 ไบต์ที่ไม่สามารถเข้าถึงได้เป็นเวลา 3600 วินาทีเท่านั้นที่จะถูกรีเซ็ตเป็น Flash ).
การใช้งานได้รับการปรับให้เหมาะสมเพื่อให้มั่นใจถึงประสิทธิภาพสูงสุดและโหลด CPU น้อยที่สุด โดยสูญเสียประสิทธิภาพการจัดเก็บข้อมูล (การกระจายตัวในระดับสูง) เพื่อยืดอายุแฟลชไดรฟ์ ข้อมูลจะถูกบัฟเฟอร์และฟลัชไปยังที่จัดเก็บข้อมูลตามลำดับ หากต้องการบันทึกสถานะแคชระหว่างการรีสตาร์ท คุณสามารถใช้ความสามารถที่ปรากฏในรุ่น 1.5.18 เพื่อถ่ายโอนข้อมูลแคชไปยังไฟล์ ในการเริ่มต้นครั้งถัดไป คุณสามารถกู้คืนแคชจากไฟล์นี้เพื่อกำจัดจุดสูงสุดในการโหลดบนตัวประมวลผลเนื้อหาเนื่องจากแคชว่างเปล่า (แคชจะกลายเป็น "อุ่น" ทันที)
การเปลี่ยนแปลงที่สำคัญประการที่สองใน Memcached 1.6 คือการทำงานใหม่ของโค้ดการสื่อสารเครือข่าย ซึ่งได้รับการปรับให้ประมวลผลคำขอแบบแบตช์โดยอัตโนมัติภายในการเรียกระบบครั้งเดียว ก่อนหน้านี้ เมื่อส่งคำสั่ง GET หลายคำสั่งในแพ็กเก็ต TCP เดียว memcached จะส่งผลลัพธ์ด้วยการเรียกของระบบแยกกัน ใน Memcached 1.6 การตอบสนองจะถูกรวบรวมและส่งกลับโดยการส่งการเรียกของระบบเพียงครั้งเดียว เป็นผลให้ขณะนี้มีคีย์เฉลี่ย 1.5 ต่อการเรียกระบบ ซึ่งในการทดสอบแสดงให้เห็นว่าโหลด CPU ลดลงสูงสุดถึง 25% และลดเวลาแฝงลงได้หลายเปอร์เซ็นต์
การออกแบบระบบย่อยเครือข่ายใหม่ยังทำให้สามารถย้ายไปยังการจัดสรรบัฟเฟอร์แบบไดนามิกได้ตามต้องการ แทนที่จะกำหนดบัฟเฟอร์แบบคงที่ การเพิ่มประสิทธิภาพนี้ช่วยลดการใช้หน่วยความจำในขณะที่รอคำสั่งใหม่ผ่านการเชื่อมต่อที่ไคลเอ็นต์สร้างขึ้นจาก 4.5 KB เป็น 400-500 ไบต์ และยังทำให้สามารถกำจัดการเรียก malloc, realloc และฟรีจำนวนมากได้ ซึ่งนำไปสู่การกระจายตัวของหน่วยความจำที่ไม่จำเป็น ระบบที่มีการเชื่อมต่อจำนวนมาก ขณะนี้เธรดของผู้ปฏิบัติงานแต่ละเธรดจัดการพูลการอ่านและเขียนของตัวเองสำหรับการเชื่อมต่อไคลเอ็นต์ที่ใช้งานอยู่ เพื่อปรับขนาดบัฟเฟอร์เหล่านี้
มีการจัดเตรียมตัวเลือก “-o resp_obj_mem_limit=N” และ “-o read_buf_mem_limt=N”
สาขา 1.6 ยังประกาศเลิกใช้งานของ
ที่มา: opennet.ru