This is a client side setting while connecting to PostgreSQL database. This doesn't have to do anything with AWS RDS. As the document says, this parameter is only valid for connections made via keeping the setting keepalives
to 1 (which is the default).
Since the doc says:
It is only supported on systems where TCP_KEEPIDLE or an equivalent socket option is available.
both tcp_keepalive_time
and tcp_keepidle
should be used for this parameter whichever is available in the OS.
The system default is the value at /proc/sys/net/ipv4/tcp_keepalive_time
. Just do:
$ cat /proc/sys/net/ipv4/tcp_keepalive_time
which should be 7200 (seconds). Some systems also use tcp_keepidle
which is equivalent to tcp_keepalive_time
. For example, IBM AIX which is a UNIX based OS uses tcp_keepidle
(whose default value is also 7200 seconds). To see which systems use which value for sending the probe after the connection is idle, you can refer this.
According to the Linux Man
page, /proc interfaces are used to set system-wide TCP parameter settings. So, setting tcp_keepalive_time
either by:
$ echo 600 > /proc/sys/net/ipv4/tcp_keepalive_time
or modifying the values in /etc/sysctl.conf
would modify the setting system wide. While TCP_KEEPIDLE
is used while writing any user specific socket communications that can be set using setsockopt
function call.
You can optionally also choose to set this parameter manually while making connection to a PostgreSQL database. If using psql
, you can do:
$ echo "SET tcp_keepalives_idle = 42;" >> ~/.psqlrc
and then proceed with psql connection. You can see a variety of options here.