Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Làm thế nào để thiết kế redis pub / sub cho hệ thống nhắn tin tức thời?

Như mọi khi, bạn cần phải đánh giá những thứ như thế này cho trường hợp sử dụng của riêng mình - không thể đưa ra lời khuyên chung chung. Bạn có thể cần tăng số lượng tệp đang mở tối đa trên hệ thống của mình, trên toàn hệ thống hoặc cho người dùng redis. Tất nhiên, điều này cũng áp dụng cho người dùng đang chạy máy chủ web của bạn.

Điều đó nói rằng, bạn nên đảm bảo lắng nghe socket.on('disconnect')quit() người đăng ký redis khi người dùng rời đi. Bạn cũng có thể muốn biết rằng socket.io có một chương trình phụ trợ redis, thúc đẩy redis pub / sub và nó cũng có khái niệm về phòng, vì vậy bạn có thể tự giải quyết một số rắc rối bằng cách sử dụng nó vì bạn đã phụ thuộc vào socket .io.

Chỉnh sửa: Sau khi kiểm tra nhanh, tôi nhận được thông báo lỗi này từ Redis sau 991 người đăng ký:

Ready check failed: Error: Error: ERR max number of clients reached

Đây là từ redis.conf mặc định :

# Set the max number of connected clients at the same time. By default
# this limit is set to 10000 clients, however if the Redis server is not
# able ot configure the process file limit to allow for the specified limit
# the max number of allowed clients is set to the current file limit
# minus 32 (as Redis reserves a few file descriptors for internal uses).
#
# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
#
# maxclients 10000

Hệ thống của tôi (Ubuntu 11.11) đi kèm với nofile mặc định giới hạn 1024, vì vậy thử nghiệm nhanh của tôi sẽ không thành công sau 992 ứng dụng khách được kết nối, điều này có vẻ như ngay từ thử nghiệm (tôi cũng có một ứng dụng khách cho nhà xuất bản). Đề xuất của tôi cho bạn là kiểm tra nofile của bạn giới hạn (trên hệ thống của tôi, nó nằm trong /etc/security/limits.{conf,d/*} và redis maxclients của bạn cài đặt và sau đó là điểm chuẩn, điểm chuẩn, điểm chuẩn!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để lưu và truy xuất chuỗi có dấu trong redis?

  2. Kết hợp hai phiên bản Redis thành một phiên bản duy nhất có hai dbs

  3. Nếu công nhân cần tây chết cứng, công việc có được thử lại không?

  4. Lỗi:Kết nối lại với 127.0.0.1:6379 không thành công - kết nối ECONNREFUSED 127.0.0.1:6379

  5. Nhóm StackExchange.Redis ConnectionMultiplexer cho các phương thức đồng bộ