Postgres クライアントのkeepalive設定

Postgresのjavaクライアントでのkeepalive設定の仕方です。

https://jdbc.postgresql.org/documentation/use/

に記載されていて

tcpKeepAlive (boolean)

という部分です。

postgresの接続URLに対して

jdbc:postgresql://localhost:5432/postgres?tcpKeepAlive=True

と後ろにtcpKeepAlive=Trueを記載することで、keepaliveが有効となります。

実際の設定箇所は、

<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.5</version>

の場合、

org.postgresql.core.v3.ConnectionFactoryImpl
~~~
boolean requireTCPKeepAlive = PGProperty.TCP_KEEP_ALIVE.getBoolean(info);
~~~

の部分で行っています。

DBCP2の場合は、urlはjdbc:postgresql://localhost:5432/postgresのままで、以下の設定を追加することでもkeepaliveが有効になります。

props.setProperty("connectionProperties", "tcpKeepAlive=True");