Я создал веб-приложение на Java-сервлете и использовал Hikaricp для соединения с облаком Google sql (Postgresql), и оно было развернуто на GAE Flexible.
Соединение с облаком sql работает нормально, но я видел в журнале стекового драйвера, что соединение автоматически создается каждые 30 минут, когда у моего приложения нет трафика (просмотр в прикрепленном файле). Автоматическое создание нового журнала подключений
Мой код для обработки соединения:
public class DataSourceUtil {
private HikariDataSource ds;
private static DataSourceUtil INSTANCE;
static {
INSTANCE = new DataSourceUtil();
System.out.println("=== Init connection ===");
}
private DataSourceUtil() {
HikariConfig config = new HikariConfig("/datasource.properties");
ds = new HikariDataSource(config);
}
public static DataSourceUtil getINSTANCE(){
if (INSTANCE == null){
INSTANCE = new DataSourceUtil();
return INSTANCE;
}else{
return INSTANCE;
}
}
public Connection getConnection() throws SQLException {
return ds.getConnection();
}
Мой конфигурационный файл Hikari:
jdbcUrl=jdbc:postgresql://google/mydb?useSSL=false&socketFactoryArg=myinstance&socketFactory=com.google.cloud.sql.postgres.SocketFactory
dataSource.user = user
dataSource.password = password
dataSource.maximumPoolSize = 10
dataSource.minimumIdle = 5
dataSource.cachePrepStmts = true
dataSource.prepStmtCacheSize = 256
dataSource.prepStmtCacheSqlLimit = 2048
dataSource.useServerPrepStmts = true
UPDATE:
После просмотра журнала в стеке драйвера я увидел информацию журнала из SocketFactory:
INFO: Ephemeral certificate for Cloud SQL instance MYINSTANCE is about to expire, obtaining new one.
И соединение будет создаваться каждые 30 минут, и память также увеличивается и не освобождается.
Это может вызвать утечку памяти в GAE.
Кто-нибудь может помочь в этом случае?
Благодаря.