2012-05-03 30 views
10

Tôi đang chạy ứng dụng JRuby on Rails. Tôi thấy rất nhiều những điều này một cách ngẫu nhiên trong nhật ký của tôi:Kích thước nhóm kết nối ứng dụng Rails, tránh các vấn đề kích thước nhóm tối đa

The max pool size is currently 5; consider increasing it

Tôi hiểu rằng tôi có thể làm tăng kích thước hồ bơi tối đa trong cấu hình của tôi để giải quyết vấn đề này. Vấn đề tôi đang tìm cách giải quyết là để hiểu số lượng tối ưu nên là bao nhiêu. Tôi đang cố gắng tránh các vấn đề tranh chấp cho các kết nối. Rõ ràng thiết lập số này cho một cái gì đó đáng ghét lớn cũng sẽ không hoạt động.

Có giao thức chung nào để theo dõi để biết cài đặt kích thước hồ bơi tối ưu của ứng dụng của bạn không?

+0

Bạn đang triển khai máy chủ nào? –

Trả lời

13

Từ here,

Kích thước tối ưu của một hồ bơi thread phụ thuộc vào số lượng các bộ vi xử lý có sẵn và bản chất của các nhiệm vụ trên hàng đợi công việc. Trên một hệ thống N-bộ xử lý cho một hàng đợi công việc sẽ giữ các nhiệm vụ tính toán hoàn toàn ràng buộc, bạn thường sẽ đạt được mức sử dụng CPU tối đa với một nhóm luồng của các chủ đề N hoặc N + 1.

Đối với các tác vụ có thể chờ I/O hoàn thành - ví dụ: tác vụ đọc yêu cầu HTTP từ ổ cắm - bạn sẽ muốn tăng kích thước nhóm vượt quá số bộ xử lý khả dụng, vì không phải tất cả chủ đề sẽ luôn hoạt động. Sử dụng lược tả, bạn có thể ước tính tỷ lệ thời gian chờ (WT) cho thời gian dịch vụ (ST) cho một yêu cầu điển hình. Nếu chúng ta gọi tỷ số này là WT/ST, đối với một hệ thống N-processor, bạn sẽ muốn có khoảng N * (1 + WT/ST) chủ đề để giữ cho bộ vi xử lý được sử dụng đầy đủ.

Việc sử dụng bộ xử lý không phải là cân nhắc duy nhất trong việc điều chỉnh kích thước nhóm của luồng. Khi nhóm luồng phát triển, bạn có thể gặp phải các giới hạn của bộ lập lịch, bộ nhớ khả dụng hoặc các tài nguyên hệ thống khác, chẳng hạn như số lượng ổ cắm, các nút xử lý mở hoặc kết nối cơ sở dữ liệu.

Vì vậy, hãy lập hồ sơ cho ứng dụng của bạn, nếu chủ đề của bạn chủ yếu là cpu, sau đó đặt kích thước hồ bơi thành số lõi hoặc số lõi + 1. Nếu bạn dành phần lớn thời gian chờ cơ sở dữ liệu gọi đến hoàn thành, sau đó thử nghiệm với số lượng chủ đề khá lớn và xem cách ứng dụng hoạt động.

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