Đã sửa nó:
sudo sysctl net.ipv4.tcp_tw_reuse=1
Sau đó, khởi động lại mongo.
Ngoài ra, bạn có thể thêm nó vào /etc/sysctl.conf (vì vậy nó sẽ được chạy khi khởi động lại):
net.ipv4.tcp_tw_reuse=1
Sau đó chạy cái này để tải lại (mà không cần phải khởi động lại)
sudo sysctl -p /etc/sysctl.conf
"Bản sửa lỗi" này sẽ vô hiệu hóa trạng thái chờ thời gian cho các ổ cắm TCP (trên toàn máy chủ). Vì vậy, nó thực sự không phải là một sửa chữa. Tuy nhiên, cho đến khi mongo giảm trạng thái chờ thời gian của chúng bằng cách sử dụng SO_LINGER, một số lượng lớn các ổ cắm máy chủ sẽ tập hợp lại ở trạng thái TIME_WAIT và không sử dụng được cho các kết nối mới. Bạn có thể xem số lượng kết nối trong TIME_WAIT với cái này:
netstat -an | grep TIME_WAIT | wc -l
Với điều đó, tôi có thể thấy nó không thành công ở khoảng 28 nghìn kết nối TIME_WAIT. Sử dụng cờ hạt nhân này:
sysctl net.ipv4.ip_local_port_range="18000 65535"
Máy chủ không thành công ở 45k kết nối. Vì vậy, để tái tạo lỗi dễ dàng hơn, bạn có thể giảm phạm vi xuống 200 hoặc nhỏ hơn.
Vì vậy, kết quả của việc này là một câu hỏi lập trình sau cùng (như bạn có thể thấy từ liên kết cuối cùng):
Tùy chọn TCP SO_LINGER (không ) - khi cần thiết
http://alas.matf.bg.ac.rs /manuals/lspe/snode=105.html