netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Willy Tarreau <w@1wt.eu>
To: Troels Arvin <troels@arvin.dk>
Cc: netdev@vger.kernel.org
Subject: Re: Default value of ipv4.tcp_keepalive_time
Date: Mon, 17 May 2021 12:00:38 +0200	[thread overview]
Message-ID: <20210517100038.GA13385@1wt.eu> (raw)
In-Reply-To: <f62489f3-5f58-4df6-b9c6-b190eb3f8c33@arvin.dk>

Hello,

On Mon, May 17, 2021 at 10:00:04AM +0200, Troels Arvin wrote:
> Hello,
> 
> At work, we have spent a great deal of work on a situation which ended up
> being resolved by changing the net.ipv4.tcp_keepalive_time sysctl to a value
> much lower than the default (we set it to 300). This was two Linux-based
> systems communicating without any firewalls in-between, where some
> long-running connections would be considered down by one system, while the
> other expected them to still be around.
> 
> The following is the description of the setting:
> "The interval between the last data packet sent (simple ACKs are not
> considered data) and the first keepalive probe; after the connection is
> marked to need keepalive, this counter is not used any further."
> 
> The default value of net.ipv4.tcp_keepalive_time sysctl is 7200 seconds,
> i.e. two hours.
> 
> It seems odd to me to still have such a long period of waiting, before
> keep-alive kicks in. With such a long initial wait, it's questionable how
> much value the keep-alive functionality has, I think.
> 
> Could it be that it's time to change the default? I would suggest a value of
> 10 minutes, i.e. 600 seconds, but I have to admit, that I don't have any
> objective argument for exactly that value.

There is no good value, it's entirely dependent on the application. At
least with a large default value you have little risk to flood your
links when dealing with hundreds of thousands to millions of idle
connections (think WebSocket for example). A 10 minute value would
still be too large for plenty of users but cause excessive traffic
for others.

I strongly suggest that the value must be tunable in the application
instead, that's the only way to get it right for everyone (see
TCP_KEEPCNT, TCP_KEEPINTVL and TCP_KEEPIDLE).

Just my two cents,
Willy

      reply	other threads:[~2021-05-17 10:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-17  8:00 Default value of ipv4.tcp_keepalive_time Troels Arvin
2021-05-17 10:00 ` Willy Tarreau [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210517100038.GA13385@1wt.eu \
    --to=w@1wt.eu \
    --cc=netdev@vger.kernel.org \
    --cc=troels@arvin.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).