Điểm:1

UWSGI chặn các kết nối đến khi tất cả các luồng đang bận

lá cờ cn

Tôi có một ứng dụng UWSGI đơn giản được đặt phía sau LB với cấu hình .ini sau

[uwsgi]
ổ cắm=0.0.0.0:5071
chdir = src/
tệp wsgi = uwsgi.py
quy trình = 2
chủ đề = 1
giao thức=http
plugin=trăn
thoát khi tải lại = false
chủ = đúng
# Dọn dẹp các tập tin tạm thời
chân không = đúng    

Khi tất cả 2x1 chủ đề đang bận, ứng dụng tiếp tục phục vụ các kết nối đến bằng cách xếp hàng đợi chúng, đợi một luồng rảnh rỗi.

Đây là một hành vi không mong muốn trong trường hợp của tôi, vì tôi muốn UWSGI trả về mã trạng thái 5xx, mã này sẽ cho phép tôi không làm quá bão hòa các tài nguyên của một bản phân phối.

Mã kiểm tra máy khách

Đính kèm mã máy khách thử nghiệm cho ứng dụng UWSGI

đại diện = {
    'http':'http://localhost:5071'
}

@threaded
chắc chắn f():
    print('Đang gửi yêu cầu')
    phản hồi = request.get('http://dummy.site',proxies=proxy)
    print(str(response.status_code )+ response.text)

cho tôi trong phạm vi (5):
    f()

Kiểm tra (1)

Thêm nghe = 2 thành .ini và kích hoạt đồng thời 3 yêu cầu sẽ chỉ in:

*** hàng đợi nghe uWSGI của ổ cắm "0.0.0.0:5071" (fd: 3) đã đầy !!! (3/2) ***

trong khi kết nối thứ ba dường như vẫn được chấp nhận, xếp hàng và sau đó được thực thi thay vì một 5xx lỗi bị ném.

Kiểm tra (2)

Thêm nghe = 0 thành .ini và kích hoạt đồng thời 5 yêu cầu sẽ chỉ thực hiện hai yêu cầu cùng một lúc. Đầu ra hàng đợi đầy đủ không hiển thị nữa. Bằng cách nào đó, các yêu cầu ở đâu đó vẫn được xếp hàng đợi và được thực hiện khi các luồng được giải phóng.

Làm cách nào tôi có thể chặn các kết nối đến ứng dụng UWSGI khi tất cả các chuỗi đang bận?

anx avatar
lá cờ fr
anx
Cấu hình của bạn có cổng và hàng đợi nghe khác với thông báo đã ghi. Bạn có đang chạy hai phiên bản và kiểm tra một phiên bản khác với ý định của bạn không? Ngoài ra, *hầu hết* mọi trường hợp sử dụng đều hoạt động tốt hơn với (ít nhất là một số trường hợp nhỏ) lắng nghe tồn đọng - khi hoàn tất, hãy kiểm tra xem các chỉ số hiệu suất của bạn có thực sự phù hợp với mong đợi của bạn hay không.
Constantin avatar
lá cờ cn
@anx chỉ là một lỗi khi tôi chuyển cổng trong khi viết câu hỏi. Về việc tồn đọng, bạn đặc biệt đề cập đến (những) tùy chọn nào?
anx avatar
lá cờ fr
anx
Ứng dụng khách mà bạn đang sử dụng để kiểm tra điều này có thể **đang thử lại** *sau* uwsgi từ chối nỗ lực kết nối một lần không? Có thể cấu hình của bạn đã hoạt động, nhưng phương pháp kiểm tra của bạn thì không?
Constantin avatar
lá cờ cn
@anx Hoàn toàn không thử lại, sử dụng `requests.get(url,proxies)` đơn giản trong python
Điểm:0
lá cờ cz

Đây thực sự là một yêu cầu kỳ lạ, nhưng nếu bạn thực sự muốn làm điều này, bạn có thể thử giảm hàng đợi nghe (về không), tức là --nghe 0. Tôi chưa kiểm tra điều này và không biết liệu số 0 có được coi là giá trị hợp lệ hay không. Đây là một cái gì đó bình thường tăng khi một trang web tăng lưu lượng truy cập, không giảm.

Constantin avatar
lá cờ cn
Với `listen = 0`, tất cả những gì xảy ra là đầu ra của hàng đợi đầy không hiển thị nữa. Có vẻ như nó vẫn bị treo "ở đâu đó" cho đến khi các sợi chỉ được giải phóng. Tôi đã đính kèm ứng dụng khách thử nghiệm của mình trong câu hỏi. Cảm ơn bạn!
Michael Hampton avatar
lá cờ cz
@Constantin Có thể điều này là không thể. Tôi không thể tìm thấy bất kỳ ai khác thậm chí đã cố gắng làm điều này.
Constantin avatar
lá cờ cn
Cảm ơn vì bạn đã phản hồi.Điều này thực sự kỳ lạ - tôi tự hỏi tại sao một máy chủ web không có khả năng bị giới hạn về số lượng kết nối. Đặc biệt là khi các ứng dụng này được đặt phía sau toàn bộ cơ sở hạ tầng nhằm hoạt động với bộ cân bằng tải, nhóm tự động thay đổi quy mô và các tài nguyên được phân bổ trước đã được tính toán

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.