Symptoms
Users report intermittent database disconnections when using **dBeaver** or other JDBC-based clients to connect to **Greenplum 6.x** clusters. These drops often occur after the connection has been idle for a period of time (e.g., 30–60 minutes), even if the database is configured with default keepalive settings.
Common environment factors include:
- Connections traversing an **SSH tunnel**.
- Intermediate security layers like **Vormetric** or Multi-agent security.
- Databases running on **RedHat 8.x** or similar Linux distributions.
Greenplum logs files (coordinator and/or segment logs) report messages like:
2025-05-28 00:00:00.096588 +03,,,p1683996,th1343197952,,,,0,,,seg1,,,,,"LOG","00000","setsockopt(TCP_KEEPCNT) failed: Invalid argument",,,,,,,0,,"pqcomm.c",2070,
All supported versions of VMware Tanzu Greenplum
The root cause is typically a mismatch between the Greenplum `tcp_keepalives_idle` setting and the timeout thresholds of intermediate network/security layers.
If the Greenplum GUC `tcp_keepalives_idle` is set to the default (typically 7200 seconds / 2 hours), but an environmental layer (like an SSH session or a firewall) is configured to reap idle connections in 60 minutes or less, the connection will be terminated before Greenplum sends its first keepalive probe.
The messages are due to Greenplum trying to set the socket option TCP_KEEPCNT on the socket connection to the coordinator or segment.
This is controlled by GUC tcp_keepalives_count. If the host OS does not support the option it will report the error message.
To prevent silent connection drops, the database must be configured to send keepalive probes more frequently than the most restrictive timeout in the network path.
1. Modify Server-Side GUCs
Lower the idle threshold so that probes are sent before the environment reaps the session. A value of **600 seconds (10 minutes)** is recommended for most environments.
Run the following commands as a database administrator:
gpconfig -c tcp_keepalives_idle -v 600
gpconfig -c tcp_keepalives_interval -v 75
gpconfig -c tcp_keepalives_count -v 9**Note on `tcp_keepalives_count`:** Some OS kernels do not support explicit counts. If you see `setsockopt(TCP_KEEPCNT) failed: invalid argument` in the logs, reset this value to `0` to use the OS default [KB 402606](https://knowledge.broadcom.com/external/article/402606).
2. Mandatory Database Restart
A database restart is **required** for these changes to take effect. These GUCs are applied to the socket listeners at startup; they do not apply to existing sessions or update dynamically without a restart.
3. Client-Side Adjustment (dBeaver)
Configure the client to proactively maintain the connection:
Other GUCs associated with keepalive:
Note: all require a database restart for the changes to take effect