Tôi đã nhận được báo cáo từ người dùng Redis và tôi không biết phải trả lời gì vì tôi không phải là chuyên gia trong lĩnh vực Linux và công cụ lập lịch của nó, tuy nhiên chúng tôi (như dự án Redis) cần phải tìm ra loại vấn đề này đặc biệt trong tương lai cũng như với Redis Cluster, chúng ta sẽ có nhiều phiên bản Redis chạy cùng lúc trong một hộp. Vì vậy, tôi đang yêu cầu một số trợ giúp ở đây.
Vấn đề:
- Hạt nhân: "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP Thu ngày 15 tháng 4 08:05:38 UTC 2010 x86_64 GNU / Linux"
- nhiều RAM miễn phí, không có quá trình nào thực hiện I / O đáng kể.
- Quan trọng , chạy trên một ví dụ lớn EC2, không phải là một máy chủ thực sự. Tôi chưa bao giờ thấy một cái gì đó như thế trong một môi trường không ảo hóa. Ví dụ EC2 là: "Bộ nhớ lớn 17,1 GB bộ nhớ cao, 6,5 ECU (2 lõi ảo với 3,25 đơn vị tính toán EC2 mỗi bộ), bộ nhớ lưu trữ cục bộ 420 GB, nền tảng 64 bit" .
Về cơ bản một khi bạn khởi động lại một cá thể Redis lớn, hệ thống sẽ trở nên chậm đến mức bạn không còn có thể gõ trên trình bao. Khi Redis tải một cá thể, nó sử dụng 100% CPU (nó tải dữ liệu nhanh nhất có thể) và đọc tệp dump.rdb một cách tuần tự. I / O không đặc biệt cao vì tải bị ràng buộc bởi CPU, không bị ràng buộc I / O.
Tại sao trên trái đất một hộp có hai CPU và nhiều RAM, không có thứ gì bị tráo đổi trên đĩa, về cơ bản nên ngừng hoạt động với tải công việc này?
Tôi có ấn tượng rằng điều này có liên quan nhiều đến thực tế đó là một phiên bản EC2, liên quan đến công nghệ ảo hóa được sử dụng, khi tôi tải tất cả các lần bộ dữ liệu Redis 24 GB trong hộp của mình mà không gặp vấn đề gì (ngay cả với các phiên bản khác của Redis chạy với tải trọng cao).
Cảm ơn cho bất kỳ gợi ý!
Cứu quốc
Chỉnh sửa : thêm một số phản hồi tôi nhận được từ twitter:
từ @ezmobius: @antirez điều đầu tiên cần làm là thử nó từ / mnt hoặc các ổ đĩa phù du cục bộ để xem liệu độ rung EBS của nó, thứ 2 là đảm bảo nó không phải là "hình phạt viết đầu tiên" (google nó) và nếu đó là bạn cần dd 0 trên đĩa trước.
từ @dvirsky: @antirez Tôi đang chạy nhiều phiên bản redis trên các nút ec2 chính xác như vậy. Tôi đã nhận thấy một số chậm trên bssave nhưng không phải là hiện tượng này.