tl; dr:Elasticache buộc bạn phải sử dụng một phiên bản redis duy nhất, là phiên bản dưới mức tối ưu.
Phiên bản dài:
Tôi nhận thấy đây là một bài viết cũ (2 năm tại thời điểm viết bài này) nhưng tôi nghĩ điều quan trọng cần lưu ý là tôi không thấy ở đây.
Trên đàn hồi, việc triển khai redis của bạn do Amazon quản lý. Điều này có nghĩa là bạn đang gặp khó khăn với cách họ chọn chạy redis của bạn.
Redis sử dụng một luồng thực thi duy nhất để đọc / ghi. Điều này đảm bảo tính nhất quán không khóa. Đó là một tài sản chính về mặt hiệu suất không quản lý khóa và chốt. Tuy nhiên, hậu quả đáng tiếc là nếu EC2 của bạn có nhiều hơn 1 vCPU, chúng sẽ không được sử dụng. Đây là trường hợp cho tất cả các trường hợp bộ đệm đàn hồi có nhiều hơn một vCPU.
Kích thước phiên bản bộ đệm đàn hồi mặc định là cache.r3.large
, có hai lõi.
Trên thực tế, có một số kích thước phiên bản với nhiều vCPU. Rất nhiều cơ hội để vấn đề này được hiển thị.
Có vẻ như Amazon đã biết về vấn đề này, nhưng họ có vẻ hơi coi thường nó.
Phần làm cho điều này đặc biệt liên quan đến câu hỏi này là trên EC2 của bạn (vì bạn đang quản lý việc triển khai của riêng mình), bạn có thể triển khai nhiều người thuê nhà . Điều này có nghĩa là bạn có nhiều trường hợp của quá trình redis lắng nghe trên các cổng khác nhau. Bằng cách chọn cổng nào để đọc / ghi vào / từ trong ứng dụng dựa trên hàm băm của khóa của bản ghi, bạn có thể tận dụng tất cả các vCPU của mình.
Như một lưu ý phụ; triển khai redisasticache trên máy đa lõi phải luôn hoạt động kém hiệu quả so với triển khai memcachedasticache trên kích thước phiên bản. Với nhiều hình thức thuê lại có xu hướng là người chiến thắng.
Cập nhật:
Amazon hiện cung cấp các số liệu riêng cho CPU phiên bản redis của bạn, EngineCPUUtilization. Bạn không cần phải tính toán CPU của mình với phép nhân kém chất lượng nữa, nhưng tính năng đa hợp đồng thuê nhà vẫn không được triển khai.