2012-09-09 33 views
24

Tôi chạy một ứng dụng bình trên uwsgi. Tôi sử dụng giám sát để quản lý quá trình uwsgi. Tôi tìm thấy nhật ký nói rằnguwsgi: ổ cắm máy chủ của bạn nghe backlog được giới hạn trong 100 kết nối

yêu cầu tồn đọng của máy chủ lưu trữ của bạn bị giới hạn ở 100 kết nối.

Cách khắc phục 100 giới hạn kết nối? Kịch bản của tôi chạy như sau:

[program:myapp] 
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads 
+0

Bạn có chắc chắn đó là những gì bạn cần làm không? Nếu bạn tích lũy một backlog của 100 kết nối, bạn phải sử dụng ít nhất khoảng 99% dung lượng của bạn, và sau đó tăng giới hạn sẽ chỉ cung cấp cho bạn một không gian thở cực kỳ tối thiểu trước khi số lượng kết nối đến vượt quá những gì bạn có thể có thể phục vụ. Nó sẽ hiệu quả hơn nhiều để tìm ra cách bạn có thể phục vụ các yêu cầu nhanh hơn. –

Trả lời

30

Lưu ý rằng một "lắng nghe tồn đọng" của 100 kết nối không có nghĩa là máy chủ của bạn chỉ có thể xử lý đồng thời 100 (hoặc tổng số) kết nối - đây là thay vì phụ thuộc vào số các quy trình hoặc chuỗi được định cấu hình. Backlog lắng nghe là một thiết lập socket cho biết hạt nhân làm thế nào để hạn chế số lượng các kết nối xuất sắc (chưa được kết nối) trong hàng đợi nghe của một ổ cắm nghe. Nếu số lượng kết nối đang chờ vượt quá kích thước được chỉ định, các kết nối mới sẽ tự động bị từ chối. Một máy chủ hoạt động thường xuyên phục vụ các kết nối của nó không nên yêu cầu kích thước backlog lớn.

Theo thủ công, bạn có thể thay đổi nghe tồn đọng với các tùy chọn -l:

-l|--listen <num> 
     set socket listen queue to <n> (default 100, maximum is system 
     dependent) 
3

Bạn có thể sửa đổi SOMAXCONN trong/proc/sys/net/cốt lõi của bạn/somaxconn để tăng giới hạn này. Nó chỉ đơn giản là hệ thống điều chỉnh Linux.

25

Đơn giản chỉ cần thay đổi (tăng) của uwsgi nghe tồn đọng bằng cách sử dụng -l hoặc --listen tùy chọn (như được chỉ bởi user4815162342) khi khởi động máy chủ, đến một giá trị lớn hơn sau đó 128 sẽ không cho phép uwsgi để chạy. Vì không còn là một hạn mức hệ thống trên ổ cắm và TCP kết nối Unix nghe hàng đợi - mặc định là 128, bạn có thể xác minh nó (đối với ổ cắm Unix):

cat /proc/sys/net/core/somaxconn 

uwsgi đã patched, như vậy nếu giá trị truyền cho Tham số --listen khi khởi động uwsgi lớn hơn thì giới hạn mức hệ thống (giới hạn hạt nhân Linux) nó sẽ khiến uwsgi bị lỗi. Nếu bạn muốn đặt giới hạn hàng đợi nghe của uwsgi lớn hơn giới hạn mức hệ thống (tức là 128) - trước tiên bạn phải tăng giới hạn của hạt nhân. Có thể được thực hiện thực hiện các lệnh sau:

$ echo 4096 > /proc/sys/net/core/somaxconn 
$ cat /proc/sys/net/core/somaxconn 
4096 

Hoặc

$ sysctl -w net.core.somaxconn=4096 

Hoặc Thêm net.core.somaxconn=4096-/etc/sysctl.conf cho nó trở nên vĩnh cửu (tồn tại khi khởi động lại).

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