Chúng tôi đang chạy ứng dụng web Ruby on Rails dưới Unicorn. Ứng dụng của chúng tôi không bị ràng buộc CPU (chúng tôi có hệ thống Xeon E5645 kép với 12 lõi và giá trị trung bình tải tối đa là khoảng 6). Chúng tôi bắt đầu với 40 công nhân Unicorn ban đầu nhưng dấu chân bộ nhớ ứng dụng tăng theo thời gian. Vì vậy, bây giờ chúng ta phải giảm số lượng quy trình công nhân. Tôi nghĩ rằng công thức (số lõi CPU + 1) tiêu chuẩn cũng áp dụng cho Unicorn nhưng đồng nghiệp của tôi đã cố gắng thuyết phục tôi rằng chúng ta nên dự trữ nhiều phiên bản Unicorn hơn cho mỗi CPU và cung cấp liên kết này . Tuy nhiên, tôi không chắc chắn chính xác tại sao chúng ta cần phải dành quá nhiều bộ nhớ cho các quá trình Unicorn nhàn rỗi.
Câu hỏi của tôi là: lý do để có nhiều hơn một phiên bản Unicorn trên mỗi lõi CPU là gì? Có phải do một số đặc thù kiến trúc của Unicorn? Tôi biết rằng các quy trình Unicorn bận rộn không thể chấp nhận các kết nối mới (chúng tôi đang sử dụng các ổ cắm tên miền UNIX để liên lạc với các phiên bản Unicorn BTW) nhưng tôi nghĩ rằng tồn đọng đã được giới thiệu chính xác để giải quyết vấn đề này. Có thể khắc phục 2 đến 8 trường hợp Unicorn này cho mỗi quy tắc CPU không?