Tôi nghĩ rằng bạn cần phải cấu hình hệ điều hành của mình thay thế. Việc thay đổi các thông số keepalive bằng các chương trình chưa được hỗ trợ rộng rãi. Điều này sẽ giúp bạn:
Sử dụng TCP keepalive để phát hiện lỗi mạng
Ngoài ra các thông số của bạn được chọn không tốt. Nếu tcp_keepalives_count=1
đã hoạt động thì ngay cả một gói dữ liệu lưu trữ bị mất cũng sẽ làm mất kết nối của bạn. Và các gói tin đơn lẻ thường bị mất. Tôi sẽ sử dụng phần sau trong /etc/sysctl.conf
trên MacOSX / FreeBSD:
net.inet.tcp.keepidle =60000
net.inet.tcp.keepintvl =10000
Hệ điều hành sẽ giảm kết nối tối đa 140 giây (60 giây nhàn rỗi + 8 gói lưu giữ trong khoảng thời gian 10 giây) sau khi mất kết nối.