2013-02-19 19 views
9

nhớ BGSAVE Tôi cố gắng để tìm hiểu những gì một môi trường an toàn cho 'maxmemory' sẽ là trong tình huống sau đây:redis Chọn maxmemory kích thước và cách sử dụng

  • ghi nặng ứng dụng
  • 8GB RAM
  • giả sử các quy trình khác chiếm khoảng 1GB
  • điều này có nghĩa là quá trình sử dụng bộ nhớ của Redis có thể không bao giờ vượt quá 7GB
  • sử dụng bộ nhớ tăng gấp đôi trên mọi sự kiện BGSAVE, vì:

Trong redis docs sau đây là nói về cách sử dụng bộ nhớ ngày càng tăng về sự kiện BGSAVE:

Nếu bạn đang sử dụng Redis trong một ứng dụng rất viết nặng, trong khi lưu tệp RDB trên đĩa hoặc viết lại Nhật ký AOF Redis có thể sử dụng tới 2 lần bộ nhớ thường được sử dụng.

  • giới hạn maxmemory được xấp xỉ so với 'used_memory' từ redis-cli INFO (như là giải thích here) và không mất nhiều bộ nhớ khác được sử dụng bởi redis vào tài khoản

Tôi thích hợp mà điều này có nghĩa là thiết lập maxmemory nên, trong tình huống này, được thiết lập không cao hơn (8GB - 1GB)/2 = 3.5GB?

Nếu có, tôi sẽ tạo yêu cầu kéo cho tài liệu redis để phản ánh điều này rõ ràng hơn.

Trả lời

3

Tôi muốn giới thiệu trong trường hợp này giới hạn 3GB. Có, các tài liệu là khá nhiều chính xác và chạy một bgsave sẽ tăng gấp đôi trong một thời gian ngắn các yêu cầu bộ nhớ. Tuy nhiên, tôi muốn dành 2GB bộ nhớ cho hệ thống, hoặc tối đa cho một bộ nhớ tối đa 40% tổng thể của bộ nhớ tối đa.

Bạn cho biết bạn có một ứng dụng rất nặng. Trong trường hợp này tôi rất muốn giới thiệu một máy chủ thứ hai thực hiện các thao tác lưu. Tôi đã tìm thấy trong thời gian cao viết và một bgsave thời gian đáp ứng cho khách hàng (s) có thể nhận được cao. Nó không phải là Redis mỗi se gây ra nó, nhưng phản ứng của chính máy chủ. Điều này đặc biệt đúng đối với các máy ảo. Theo thiết lập này, bạn sẽ sử dụng máy chủ thứ hai để nô lệ từ chính và lưu vào đĩa trong khi đầu tiên vẫn đáp ứng.