Connections to MySQL servers can automatically time-out according to the
wait_timeout
variable
configured within the MySQL server.
To prevent these connections being automatically closed, the connector
can be configured to keep the connection alive by submitting a simple
SELECT
statement (actually
SELECT 'KEEP_ALIVE'
) periodically
to ensure that the MySQL timeout is not reached and the connection
closed.
Two parameters configure the keepalive functionality:
connection.keepAlive.interval
The interval used to check for idle connections. If set to a value of 0, the keep alive check is disabled. Any value greater than zero is the interval check period in seconds.
connection.keepAlive.timeout
The keep-alive statement is submitted if the time since the last activity reaches this timeout value.
The default setting for both parameters is
autodetect
.
When set to autodetect
default, the values are automatically calculated by the connector
computing suitable values based on the
wait_timeout
value
configured in the MySQL server.
connection.keepAlive.interval = (int) Math.floor(wait_timeout * 0.10); connection.keepAlive.timeout = (int) Math.floor(wait_timeout * 0.7);
These calculations cannot be modified, but the properties can be
explicitly set by using the --property
to explicitly set the property through tpm, for
example:
shell> tpm update alpha --property=connection.keepAlive.interval=30
Please note that Connector Keepalive is not compatible with Bridge mode.
In Bridge mode, the client session is directly connected to the MySQL server at the TCP level, literally forwarding the client's packet to the server. This means that closing connections is the responsibility of the MySQL server based on the configured wait_timeout value, not the Connector.