Một số hệ thống Linux trở nên rất chậm khi Redis đang tải một bộ dữ liệu lớn


14

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.

Câu trả lời:


4

Đầu ra từ 'top' có thể mang lại một số manh mối. Có một trường gần phía trên bên trái được gắn nhãn '% bị đánh cắp' phản ánh lượng CPU phần cứng được chuyển hướng đến các khách khác trên cùng một hộp vật lý. Tôi đã thấy những loại chậm này khi nhà ảo thuật quyết định phân bổ nhiều CPU hơn cho một khách khác, đặc biệt là khi tôi đang thực hiện một số nhiệm vụ chuyên sâu về CPU trong thời gian dài.

Không chắc đó có phải là vấn đề của bạn hay không nhưng nó đáng để kiểm tra.


Cảm ơn Kevin, điều này rất thú vị và tôi hoàn toàn không biết về điều này.
antirez

2

Tôi đã có cùng một vấn đề trên một ví dụ EC2. Điều này có thể không liên quan đến Redis - nó xảy ra khi có IO cao xảy ra (ví dụ: khi redis đang tải tệp kết xuất).

Hãy xem một chủ đề này trên các diễn đàn amazon: https://forums.aws.amazon.com/thread.jspa?messageID=215406

Tôi đã thử nghiệm với các nhân / hình ảnh khác nhau và bây giờ nó chạy tốt (trên kernel 2.6,21 cũ).


Cảm ơn mhdk, tôi đoán rằng điều này cũng liên quan đến ảo hóa + bộ lập lịch Linux. Ngay cả với đĩa chậm, I / OI không thể thấy bất kỳ lý do nào khiến các quy trình khác bị chặn nếu chúng không sử dụng đĩa và không có trang bị tráo đổi. Thử các cấu hình nhân / bộ lập lịch khác nhau có lẽ đáng để thử.
antirez

2

Bạn nên kiểm tra việc đánh cắp CPU ( xx.x%stở phía bên phải của dòng cpu) tophiển thị khi bạn trải nghiệm tải 100% và vỏ bị đóng băng. Ăn cắp đại diện cho bao nhiêu chu kỳ CPU thực tế của bạn bị đánh cắp khỏi máy của bạn bởi một trình ảo hóa và được trao cho một máy khác. Ăn cắp CPU chỉ có liên quan trong môi trường ảo hóa. Tôi đã có vấn đề chính xác với các trường hợp vi mô và về cơ bản khiến cho cá thể của tôi không thể sử dụng được trong khoảng 1 giờ hoặc lâu hơn (cho đến khi nhiệm vụ của tôi kết thúc) nếu thực hiện các tác vụ nặng về CPU.

Bạn có thể tìm hiểu thêm về chủ đề này bằng cách đọc bài đăng này trên Greg's Ramblings . Mặc dù nếu bạn dùng từ của Greg, điều này chỉ xảy ra trong các trường hợp vi mô.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.