swoole / rfc

Swoole 提案
116 stars 3 forks source link

RFC-1022: Server是否能够支持配置TCP_USER_TIMEOUT #69

Closed Appla closed 4 years ago

Appla commented 4 years ago

需求背景

https://man7.org/linux/man-pages/man7/tcp.7.html
       TCP_USER_TIMEOUT (since Linux 2.6.37)
              This option takes an unsigned int as an argument.  When the
              value is greater than 0, it specifies the maximum amount of
              time in milliseconds that transmitted data may remain
              unacknowledged before TCP will forcibly close the
              corresponding connection and return ETIMEDOUT to the
              application.  If the option value is specified as 0, TCP will
              use the system default.

              Increasing user timeouts allows a TCP connection to survive
              extended periods without end-to-end connectivity.  Decreasing
              user timeouts allows applications to "fail fast", if so
              desired.  Otherwise, failure may take up to 20 minutes with
              the current system defaults in a normal WAN environment.

              This option can be set during any state of a TCP connection,
              but is effective only during the synchronized states of a
              connection (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT,
              CLOSING, and LAST-ACK).  Moreover, when used with the TCP
              keepalive (SO_KEEPALIVE) option, TCP_USER_TIMEOUT will
              override keepalive to determine when to close a connection due
              to keepalive failure.

              The option has no effect on when TCP retransmits a packet, nor
              when a keepalive probe is sent.

              This option, like many others, will be inherited by the socket
              returned by accept(2), if it was set on the listening socket.

              Further details on the user timeout feature can be found in
              RFC 793 and RFC 5482 ("TCP User Timeout Option").

需求

matyhtf commented 4 years ago

感谢你的建议,可以增加此参数。