Chúng tôi đang cố gắng sử dụng Memcached (1.5.22) làm trình xử lý phiên trên máy chủ có Apache + PHP 7.4, tuy nhiên, chúng tôi đã quan sát thấy lỗi ngẫu nhiên với thông báo bên dưới:
session_start(): Không thể đọc dữ liệu phiên: người dùng (đường dẫn: XX.XX.X.XX:11211)
Ứng dụng đang thực hiện các yêu cầu AJAX, khoảng 25 yêu cầu trong một giây, trong số 25 yêu cầu này, một số ít có lỗi.
Do đó, chúng tôi quyết định xem nhật ký lỗi Memcached và nhận thấy rằng khi lỗi này xảy ra, Memcached trả về gấp 3 lần lỗi trong nhật ký, như sau:
238593:12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 ADD da_session:b2ZnDAkIZ15vpbhrHHkxoZesSSC6Lgi5:lock Giá trị len là 10
238594-Ngày 12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: >32 Viết lỗi: Dữ liệu tồn tại cho khóa.
--
238608-Ngày 12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 0x00 0x00 0x00 0x00
238609:12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 ADD da_session:b2ZnDAkIZ15vpbhrHHkxoZesSSC6Lgi5:lock Giá trị len là 10
238610-Ngày 12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: >32 Viết lỗi: Dữ liệu tồn tại cho khóa.
--
238624-Ngày 12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 0x00 0x00 0x00 0x00
238625:12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: <32 ADD da_session:b2ZnDAkIZ15vpbhrHHkxoZesSSC6Lgi5:lock Giá trị len là 10
238626-Ngày 12 tháng 5 14:09:45 memcached-01 systemd-memcached-wrapper[436]: >32 Viết lỗi: Dữ liệu tồn tại cho khóa.
Chúng tôi đã thử tăng memcached.sess_lock_retries
đến 50, vô hiệu hóa memcached.sess_locking
, và lỗi luôn xảy ra.
memcached.sess_lock_retries 50
memcached.sess_lock_wait chưa được đặt
memcached.sess_lock_wait_max 2000
memcached.sess_lock_wait_min 150
Điều gì có thể xảy ra?