From e6fb109f7b2b54af96c7dba96d7a683e36e695c9 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Wed, 28 May 2025 12:45:39 -0400 Subject: [PATCH] [avaje-jex] tweak hikari settings --- frameworks/Java/avaje-jex/pom.xml | 2 +- .../benchmark/repository/HikariFactory.java | 20 ++++++++++++++++--- .../benchmark/repository/JDBCDbService.java | 6 ++---- .../src/main/resources/application.properties | 2 +- .../src/main/resources/hikari.properties | 2 +- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/frameworks/Java/avaje-jex/pom.xml b/frameworks/Java/avaje-jex/pom.xml index acca218c0c6..39e68f6f800 100644 --- a/frameworks/Java/avaje-jex/pom.xml +++ b/frameworks/Java/avaje-jex/pom.xml @@ -58,7 +58,7 @@ org.postgresql postgresql - 42.7.5 + 42.7.6 diff --git a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java index 6b38d6f14a2..bcd9e24a1dd 100644 --- a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java +++ b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java @@ -5,6 +5,7 @@ import io.avaje.config.Config; import io.avaje.inject.Bean; import io.avaje.inject.Factory; +import java.util.concurrent.Executors; import javax.sql.DataSource; @Factory @@ -22,8 +23,21 @@ DataSource dataSource() { maxPoolSize = Config.getInt("postgresDefaultPoolSize"); } - var hikari = new HikariDataSource(new HikariConfig("hikari.properties")); - hikari.setMaximumPoolSize(maxPoolSize); - return hikari; + maxPoolSize = Math.max(maxPoolSize, Runtime.getRuntime().availableProcessors() * 2); + HikariConfig hikariConfig = new HikariConfig("hikari.properties"); + + var vtThreadFactory = Thread.ofVirtual().factory(); + hikariConfig.setThreadFactory(vtThreadFactory); + hikariConfig.setScheduledExecutor( + Executors.newScheduledThreadPool(maxPoolSize, vtThreadFactory)); + + // data source properties + hikariConfig.addDataSourceProperty("cachePrepStmts", "true"); + hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250"); + hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); + hikariConfig.addDataSourceProperty("ssl", "false"); + hikariConfig.addDataSourceProperty("tcpKeepAlive", "true"); + hikariConfig.setMaximumPoolSize(maxPoolSize); + return new HikariDataSource(hikariConfig); } } diff --git a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java index a4d790d717d..8cf49d5223a 100644 --- a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java +++ b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java @@ -22,7 +22,7 @@ public JDBCDbService(DataSource connectionFactory) { } @Override - public List getWorld(int num) { + public List getWorld(int num) throws SQLException { String select = "select id, randomNumber from World where id = ?"; List worldList = new ArrayList<>(); @@ -37,8 +37,6 @@ public List getWorld(int num) { worldList.add(new World(rs.getInt("id"), rs.getInt("randomNumber"))); } } - } catch (SQLException e) { - throw new RuntimeException(e); } return worldList; @@ -55,7 +53,7 @@ public List getFortune() throws SQLException { ResultSet rs = pstm.executeQuery()) { while (rs.next()) { - fortuneList.add(new Fortune(rs.getInt("id"), rs.getString("message"))); + fortuneList.add(new Fortune(rs.getInt(1), rs.getString(2))); } fortuneList.add(new Fortune(defaultFortuneId, defaultFortuneMessage)); } diff --git a/frameworks/Java/avaje-jex/src/main/resources/application.properties b/frameworks/Java/avaje-jex/src/main/resources/application.properties index 804296ecc89..5976084e167 100644 --- a/frameworks/Java/avaje-jex/src/main/resources/application.properties +++ b/frameworks/Java/avaje-jex/src/main/resources/application.properties @@ -1,6 +1,6 @@ physicalTag=Citrine cloudTag=Azure -postgresPhysicalPoolSize=56 +postgresPhysicalPoolSize=64 postgresCloudPoolSize=16 postgresDefaultPoolSize=10 \ No newline at end of file diff --git a/frameworks/Java/avaje-jex/src/main/resources/hikari.properties b/frameworks/Java/avaje-jex/src/main/resources/hikari.properties index f859c5a8763..85001e992ba 100644 --- a/frameworks/Java/avaje-jex/src/main/resources/hikari.properties +++ b/frameworks/Java/avaje-jex/src/main/resources/hikari.properties @@ -1,4 +1,4 @@ -dataSourceClassName=org.postgresql.ds.PGSimpleDataSource +jdbcUrl=jdbc:postgresql://tfb-database:5432/hello_world dataSource.serverName=tfb-database dataSource.portNumber=5432 dataSource.user=benchmarkdbuser