2014-04-10 18 views
37

Tôi muốn biết có bao nhiêu hàng đợi tối đa mà RabbitMQ có thể xử lý trên một máy chủ đơn lẻ?RabbitMQ - Có bao nhiêu hàng đợi mà RabbitMQ có thể xử lý trên một máy chủ đơn lẻ?

Điều đó có phụ thuộc vào RAM không? Liệu nó phụ thuộc vào quá trình erlang?

+1

Máy chủ RabbitMQ có thể xử lý 10 triệu hàng đợi không? Máy chủ của tôi sẽ cần bao nhiêu bộ nhớ? –

+0

@ N.B. - Không liên quan đến phần cứng của nó :), về các yêu cầu xử lý về RabbitMQ –

+3

Tôi đồng ý rằng tôi nên cân nhắc phần cứng nhưng kỹ sư phần cứng không thể trả lời câu hỏi này :) ..câu hỏi này cần kiến ​​thức về máy chủ rabbitMQ, giao thức xếp hàng nhắn tin và cuối cùng nhưng không kém phần trăm bộ nhớ mà RabbitMQ thực hiện (tôi nghĩ 40% tổng RAM) –

Trả lời

32

Không có giới hạn mã hóa cứng nào trong nhà môi giới RabbitMQ. Nhà môi giới sẽ sử dụng tất cả các tài nguyên có sẵn (trừ khi bạn đặt giới hạn đối với một số tài nguyên, chúng được gọi là watermarks trong thuật ngữ RabbitMQ).

Có một số hạn chế đặt bằng Erlang chính nó, như số lượng tối đa của các quá trình đồng thời, nhưng nếu bạn có lý thuyết có thể tiếp cận họ vào nút duy nhất sau đó nó luôn luôn là ý tưởng tốt để sử dụng distributed features.

Có rất nhiều cuộc thảo luận về việc sử dụng tài nguyên RabbitMQ và giới hạn,

P.S. Tuy nhiên, có giới hạn giao thức AMQP.Chúng được mô tả trong phần 4.9 Limitations

Các thông số kỹ thuật AMQP áp đặt những giới hạn trên các phần mở rộng tương lai của AMQP hoặc các giao thức so với cùng định dạng dây cấp:

  • Số kênh cho mỗi kết nối: kênh 16-bit con số.
  • Số lớp giao thức: id lớp 16 bit.
  • Số phương thức cho mỗi lớp giao thức: id phương pháp 16 bit.

Các thông số kỹ thuật AMQP áp đặt những giới hạn về dữ liệu:

  • Kích thước tối đa của một chuỗi ngắn: 255 octet.
  • Kích thước tối đa của một chuỗi dài hoặc bảng trường: kích thước 32 bit.
  • Kích thước tối đa của tải trọng khung: kích thước 32 bit.
  • Kích thước tối đa của một nội dung: kích thước 64 bit.

Các máy chủ hoặc khách hàng cũng có thể áp đặt giới hạn riêng của mình về tài nguyên như vậy như số lượng kết nối đồng thời, số lượng người tiêu dùng mỗi kênh, số lượng hàng đợi, vv Những không ảnh hưởng đến khả năng tương tác và không được chỉ định.

16

bài này có thể giúp bạn:

http://rabbitmq.1065348.n5.nabble.com/Max-messages-allowed-in-a-queue-in-RabbitMQ-td26063.html

EDIT

1) Max Queues phép trong RabbitMQ?

Hàng nghìn (hoặc thậm chí hàng chục nghìn) hàng đợi không có vấn đề gì cả. Ví dụ: mỗi hàng (ví dụ, hàng đợi, trao đổi, ràng buộc, v.v.) sẽ chiếm một số bộ nhớ và/hoặc dung lượng đĩa. Theo mặc định, Erlang sẽ thi hành một số lượng tối đa các quá trình đồng thời (tức là, trọng lượng nhẹ luồng) ở khoảng 32768 IIRC. Mỗi hàng đợi được quản lý bởi quy trình của riêng mình và mỗi kết nối có thể dẫn đến nhiều kết nối, vì vậy nếu bạn đang lập kế hoạch có số lượng hàng đợi hoạt động rất lớn trong một nút đơn lẻ (?) Và sử dụng tất cả cùng một lúc , sau đó bạn có thể cần phải chỉnh các đối số trình mô phỏng con thỏ chuyển VM bằng cách đặt + P thành giới hạn cao hơn.

Bạn cũng có khả năng sử dụng nhiều Gb chỉ với chi phí cho mỗi hàng đợi /kết nối khá nhanh, vì vậy bạn sẽ cần một máy chủ khá thịt để xử lý hàng triệu cả hai. Hàng chục nghìn người không nên có vấn đề gì về vấn đề này, với điều kiện chúng phù hợp với RAM.

+1

Bài đăng hay. về cơ bản tôi muốn câu trả lời kỹ thuật cho Ex. RAM 1Gb có thể treo nhiều yêu cầu này .. như thế này - để tôi có thể quyết định nên tăng RAM –

+2

Như bạn có thể đọc trên bài đăng: "vì vậy nếu bạn đang có kế hoạch có số lượng hàng đợi hoạt động rất lớn trong một nút (?) và sử dụng tất cả cùng một lúc, sau đó bạn có thể cần phải tinh chỉnh các đối số giả lập con thỏ truyền VM bằng cách đặt + P đến giới hạn cao hơn. " Vì vậy, bạn phải tạo một mô phỏng thực, beacuse số phụ thuộc hình thành các hoạt động .. kết nối .. sau đó bạn có thể dedice. – Gabriele

+0

Bạn nên thêm một số trích dẫn từ trang đó, vì nó có thể biến mất. – Beryllium

Các vấn đề liên quan