11

tôi đang làm việc trên ứng dụng java dựa trên mã nguồn mở, tức là xwiki. Insie hibernate.cfg.xml tôi có thể thấy giá trị của parametrs connection.pool_size và statement_cache.siz là 2 (cho mỗi). Ứng dụng của tôi sẽ có tải tối đa 100 người dùng tại thời điểm. Bây giờ câu hỏi của tôi là những gì nên là lý tưởng kết nối hồ bơi kích thước cho việc này. Với tôi kích thước 2 trông rất ít. Nếu 100 người dùng kết nối tại một thời điểm 98 người dùng phải chờ kết nối được giải phóng? Tôi có nên giữ kích thước hồ bơi kết nối là 100 trong trường hợp của tôi không?Suy nghĩ đằng sau quyết định về kích thước nhóm kết nối cơ sở dữ liệu

tôi đang sử dụng máy chủ sql microsoft.

Ngoài việc này có giới hạn về kích thước nhóm kết nối tối đa. Liệu nó phụ thuộc vào máy chủ web (tomcat trong trường hợp của tôi) hoặc nhà cung cấp datastore (ms sql server)?

+0

Cũng nghĩ về số lượng kết nối mà máy chủ có thể hỗ trợ. – Thilo

+0

Q1: Bạn có bao nhiêu CPU ?, Q2: Truy vấn của bạn có tương đối IO được điều khiển (OLTP - độ trễ) hoặc CPU nặng (SORT, GROUP, analytics) không? – jasonk

+0

Hãy chú ý rằng hồ bơi có thể mất phí –

Trả lời

3

Nếu yêu cầu điển hình dành 50% thời gian tính toán và 50% cho kết nối cơ sở dữ liệu, bạn có thể chỉ cần 50 kết nối trong hồ bơi của mình. Tất nhiên, ứng dụng của bạn nên phát hành kết nối db càng sớm càng tốt.

Nói chung việc giữ kết nối không đắt đối với cơ sở dữ liệu (trong khi tạo một kết nối mới thì khá đắt). Nó sẽ không có vấn đề gì để giữ cho kích thước đủ cao.

Bạn có thể đặt

  • hồ bơi kích thước tối đa đến 100
  • hồ bơi kích thước ưa thích đến 50
  • và thời gian chờ nhàn rỗi đến 5 phút cho các kết nối gộp.

Tôi không quen thuộc với máy chủ sql microsoft nhưng tôi nghĩ rằng nó max pool limit is 100

Tomcat sẽ ổn với con số này của kích thước hồ bơi.

+0

Cảm ơn imran đã trả lời. Bạn có nói: -Nếu một yêu cầu điển hình dành 50% thời gian tính toán và 50% cho kết nối cơ sở dữ liệu, bạn chỉ cần 50 kết nối trong hồ bơi. Nếu tất cả 100 người dùng cần kết nối cùng một lúc. Tôi đồng ý trong hầu hết các kịch bản, nó sẽ không là trường hợp. Nhưng tôi nghĩ rằng việc tính toán bạn đã nói giả định rằng những yêu cầu 50 đầu tiên sẽ cần kết nối trong 0,5 giây đầu tiên và phần còn lại trong tiếp theo 0,5 giây. ĐÚNG? –

2

Bạn nên đánh giá yêu cầu đồng thời của ứng dụng, thời gian hoạt động của cơ sở dữ liệu và cũng có bao nhiêu kết nối mà máy chủ (hoặc db vender) có thể hỗ trợ.

Vì vậy, 100 người sử dụng không có nghĩa là bạn cần có một hồ bơi kết nối với kích thước 100.

8

Sizing kết nối hồ bơi không phải là một điều tầm thường để làm. Về cơ bản bạn cần:

  • số liệu để điều tra việc sử dụng kết nối
  • cơ chế chuyển đổi dự phòng khi không có kết nối sẵn

FlexyPool nhằm giúp bạn tìm quyền kích thước hồ bơi kết nối của chúng tôi.

Bạn có thể kiểm tra các bài viết sau đây:

0

Ghi chú rằng các hồ bơi có thể tốn bộ nhớ cho gì tôi f không sử dụng. Cấu hình hồ bơi rất phụ thuộc vào nơi nút cổ chai của bạn là:

CPU, bộ nhớ, đĩa, mạng, truy vấn cơ sở dữ liệu phức tạp, đồng thời cao, ... nhiều trong số đó?

Kích thước hồ bơi mặc định thường là 5 đến 10. Trước tiên, hãy đảm bảo rằng bạn gặp sự cố với cơ sở dữ liệu. Hãy thử những thái cực như 2 hoặc 30 dưới tải nhân tạo và xem nó hoạt động như thế nào. Tôi nghĩ rằng các liên kết được cung cấp bởi @ vlad-mihalcea khá thú vị.

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