2011-06-23 9 views
7

Tôi hiện đang thử nghiệm chèn các khóa trong cơ sở dữ liệu Redis (trên máy cục bộ). Tôi có hơn 5 triệu khóa và tôi chỉ có 4GB RAM nên tại một thời điểm tôi đạt dung lượng RAM và hoán đổi (và máy tính của tôi bị hỏng) ...Redis - giám sát việc sử dụng bộ nhớ

Vấn đề của tôi: Làm cách nào để tạo bộ nhớ theo dõi sử dụng trên máy có cơ sở dữ liệu Redis, và theo cách này, cảnh báo không chèn thêm một số khóa vào cơ sở dữ liệu Redis?

Cảm ơn.

Trả lời

4

Về việc sử dụng bộ nhớ, tôi khuyên bạn nên xem redis.io FAQ và bài viết này về using redis as a LRU cache.

Bạn có thể giới hạn mức sử dụng bộ nhớ thông qua cài đặt cấu hình maxmemory, trong trường hợp giới hạn bộ nhớ đạt được, tất cả yêu cầu ghi sẽ không thành công hoặc bạn có thể đặt chính sách maxmemory thành allkeys-lru, ví dụ , để bắt đầu ghi đè dữ liệu được sử dụng gần đây nhất trên máy chủ với những thứ bạn cần, v.v. Đối với hầu hết các trường hợp sử dụng, bạn có đủ khả năng xử lý các vấn đề đó thông qua cấu hình đúng.

Lời khuyên của tôi là giữ mọi thứ đơn giản và quản lý vấn đề này thông qua cấu hình máy chủ redis thay vì đưa thêm sự phức tạp thông qua giám sát mức độ os hoặc tương tự.

+0

Cảm ơn. Tôi sẽ thấy các giải pháp khác nhau, đặc biệt là sử dụng bài viết về cách sử dụng redis làm bộ nhớ cache LRU (tôi chưa từng thấy nó trước đây) – kozher

4

Có một tiện ích Unix tốt có tên vmstat. Nó giống như hàng đầu nhưng dòng lệnh, vì vậy bạn có thể sử dụng bộ nhớ và được chuẩn bị trước khi hệ thống dừng lại. Bạn cũng có thể sử dụng ps v PID để nhận thông tin này về quy trình cụ thể. PID của Redis có thể được truy xuất theo cách này: pidof redis-server

1

Bộ nhớ là tài nguyên quan trọng cho hiệu suất Redis. Bộ nhớ được sử dụng định nghĩa tổng số byte được Redis phân bổ bằng cách sử dụng bộ cấp phát của nó (hoặc là libc chuẩn, jemalloc, hoặc một bộ cấp phát thay thế như tcmalloc).

Bạn có thể thu thập tất cả dữ liệu số liệu sử dụng bộ nhớ cho phiên bản Redis bằng cách chạy "bộ nhớ thông tin".

 
127.0.0.1:6379> info memory 
Memory 
used_memory:1007280 
used_memory_human:983.67K 
used_memory_rss:2002944 
used_memory_rss_human:1.91M 
used_memory_peak:1008128 
used_memory_peak_human:984.50K 

Đôi khi, khi Redis được cấu hình không có giới hạn bộ nhớ tối đa, sử dụng bộ nhớ cuối cùng sẽ đến bộ nhớ hệ thống và máy chủ sẽ bắt đầu ném lỗi "Hết bộ nhớ". Vào những thời điểm khác, Redis được định cấu hình với giới hạn bộ nhớ tối đa nhưng chính sách không đề cập. Điều này sẽ khiến máy chủ không loại bỏ bất kỳ khóa nào, do đó ngăn không cho bất kỳ ghi nào cho đến khi bộ nhớ được giải phóng. Các giải pháp cho các vấn đề như vậy sẽ được cấu hình Redis với bộ nhớ tối đa và một số chính sách trục xuất. Trong trường hợp này, máy chủ bắt đầu gỡ bỏ các khóa bằng chính sách đuổi vì việc sử dụng bộ nhớ đạt đến mức tối đa.

Bộ nhớ RSS (Resident Set Size) là số byte mà hệ điều hành đã cấp cho Redis. Nếu tỷ lệ ‘memory_rss’ thành ‘memory_used’ lớn hơn ~ 1.5, thì nó biểu thị sự phân mảnh bộ nhớ. Bộ nhớ phân mảnh có thể được phục hồi bằng cách khởi động lại máy chủ.

Đọc mô tả chi tiết hơn để giám sát máy chủ redis here