Một điều bạn nên làm để bắt đầu là sửa chữa net.ipv4.tcp_fin_timeout=1
. Đó là cách thấp, có lẽ bạn không nên lấy mức đó thấp hơn 30.
Vì đây là đằng sau nginx. Điều đó có nghĩa là nginx đang hoạt động như một proxy ngược? Nếu đó là trường hợp thì các kết nối của bạn là 2 lần (một đến máy khách, một đến máy chủ web của bạn). Bạn có biết những ổ cắm này thuộc về cái nào không?
Cập nhật:
fin_timeout là thời gian họ ở trong FIN-WAIT-2 (Từ networking/ip-sysctl.txt
trong tài liệu kernel):
tcp_fin_timeout - INTEGER
Time to hold socket in state FIN-WAIT-2, if it was closed
by our side. Peer can be broken and never close its side,
or even died unexpectedly. Default value is 60sec.
Usual value used in 2.2 was 180 seconds, you may restore
it, but remember that if your machine is even underloaded WEB server,
you risk to overflow memory with kilotons of dead sockets,
FIN-WAIT-2 sockets are less dangerous than FIN-WAIT-1,
because they eat maximum 1.5K of memory, but they tend
to live longer. Cf. tcp_max_orphans.
Tôi nghĩ rằng bạn có thể chỉ cần để Linux giữ số ổ cắm TIME_WAIT so với số tiền trông giống như nắp 32k trên chúng và đây là nơi Linux tái chế chúng. 32k này được ám chỉ trong liên kết này :
Ngoài ra, tôi thấy / Proc / sys / net / ipv4 / tcp_max_tw_buckets gây nhầm lẫn. Mặc dù mặc định được đặt ở 180000, tôi thấy sự gián đoạn TCP khi tôi có ổ cắm 32K TIME_WAIT trên hệ thống của mình, bất kể tối đa hai nhóm.
Liên kết này cũng gợi ý rằng trạng thái TIME_WAIT là 60 giây và không thể điều chỉnh thông qua Proc.
Sự thật thú vị ngẫu nhiên:
Bạn có thể thấy các bộ hẹn giờ trên timewait với netstat cho mỗi ổ cắm vớinetstat -on | grep TIME_WAIT | less
Tái sử dụng Vs Tái chế:
Đây là một loại thú vị, nó đọc như tái sử dụng cho phép tái sử dụng ổ cắm time_Wait và tái chế đặt nó vào chế độ TURBO:
tcp_tw_recycle - BOOLEAN
Enable fast recycling TIME-WAIT sockets. Default value is 0.
It should not be changed without advice/request of technical
experts.
tcp_tw_reuse - BOOLEAN
Allow to reuse TIME-WAIT sockets for new connections when it is
safe from protocol viewpoint. Default value is 0.
It should not be changed without advice/request of technical
experts.
Tôi không khuyên bạn nên sử dụng net.ipv4.tcp_tw_recycle vì nó gây ra sự cố với các máy khách NAT .
Có lẽ bạn có thể thử không bật cả hai thứ đó lên và xem nó có tác dụng gì (Hãy thử từng cái một và xem chúng hoạt động như thế nào)? Tôi sẽ sử dụng netstat -n | grep TIME_WAIT | wc -l
để phản hồi nhanh hơn Munin.