เรากำลังพยายามใช้ Memcached (1.5.22) เป็นตัวจัดการเซสชันบนเซิร์ฟเวอร์ที่มี Apache + PHP 7.4 อย่างไรก็ตาม เราสังเกตเห็นข้อผิดพลาดแบบสุ่มพร้อมข้อความด้านล่าง:
session_start(): ไม่สามารถอ่านข้อมูลเซสชัน: ผู้ใช้ (เส้นทาง: XX.XX.X.XX:11211)
แอปพลิเคชันกำลังส่งคำขอ AJAX ประมาณ 25 คำขอในหนึ่งวินาที จาก 25 คำขอเหล่านี้ มีเพียงไม่กี่คำขอที่แสดงข้อผิดพลาด
ด้วยเหตุนี้เราจึงตัดสินใจดูบันทึกข้อผิดพลาด Memcached และสังเกตเห็นว่าเมื่อเกิดข้อผิดพลาดนี้ Memcached จะส่งกลับข้อผิดพลาด 3 เท่าในบันทึก ดังด้านล่าง:
238593:12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 เพิ่ม da_session:b2ZnDAkIZ15vpbhrHHkxoZesSSC6Lgi5:lock Value len คือ 10
238594-12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: >32 เขียนข้อผิดพลาด: มีข้อมูลสำหรับคีย์
--
238608-12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 0x00 0x00 0x00 0x00
238609:12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 เพิ่ม da_session:b2ZnDAkIZ15vpbhrHHkxoZesSSC6Lgi5:lock Value len คือ 10
238610-12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: >32 เขียนข้อผิดพลาด: มีข้อมูลสำหรับคีย์
--
238624-12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 0x00 0x00 0x00 0x00
238625:12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 ADD da_session:b2ZnDAkIZ15vpbhrHHkxoZesSSC6Lgi5:lock Value len คือ 10
238626-12 พฤษภาคม 14:09:45 memcached-01 systemd-memcached-wrapper[436]: >32 เขียนข้อผิดพลาด: มีข้อมูลสำหรับคีย์
เราพยายามเพิ่มขึ้นแล้ว memcached.sess_lock_retries
ถึง 50 ปิดการใช้งาน memcached.sess_locking
และข้อผิดพลาดเกิดขึ้นได้เสมอ
memcached.sess_lock_retries 50
memcached.sess_lock_wait ไม่ได้ตั้งค่า
memcached.sess_lock_wait_max 2000
memcached.sess_lock_wait_min 150
อะไรจะเกิดขึ้น?