Tôi có ứng dụng Flask-SQLAlchmey đang chạy trong Gunicorn được kết nối với cơ sở dữ liệu PostgreQuery và tôi gặp khó khăn khi tìm hiểu pool_size
giá trị sẽ là bao nhiêu và tôi nên mong đợi bao nhiêu kết nối cơ sở dữ liệu.
Đây là sự hiểu biết của tôi về cách mọi thứ hoạt động:
- Các quy trình trong Python 3.7 KHÔNG chia sẻ bộ nhớ
- Mỗi công nhân Gunicorn là quy trình riêng của nó
- Do đó, mỗi nhân viên Gunicorn sẽ nhận được bản sao của nhóm kết nối cơ sở dữ liệu và nó sẽ không được chia sẻ với bất kỳ nhân viên nào khác
- Chủ đề trong Python DO chia sẻ bộ nhớ
- Do đó, mọi luồng trong công nhân Gunicorn S share chia sẻ nhóm kết nối cơ sở dữ liệu
Điều đó có đúng không? Nếu đó là chính xác, thì đối với ứng dụng Flask đồng bộ đang chạy trong Gunicorn:
- Là số lượng kết nối cơ sở dữ liệu tối đa = (số lượng công nhân) * (số lượng luồng trên mỗi công nhân)?
- Và trong một công nhân, nó có bao giờ sử dụng nhiều kết nối từ một hồ bơi hơn là có công nhân không?
Có một lý do tại sao pool_size
nên lớn hơn số lượng chủ đề? Vì vậy, đối với một ứng dụng gunicorn ra mắt gunicorn --workers=5 --threads=2 main:app
nên pool_size
là 2? Và nếu tôi chỉ sử dụng công nhân, và không sử dụng chủ đề, có lý do nào để có số pool_size
lớn hơn 1 không?