Browse Source

[avaje-jex] tweak hikari settings (#9919)

Josiah Noel 2 months ago
parent
commit
155f7769de

+ 1 - 1
frameworks/Java/avaje-jex/pom.xml

@@ -58,7 +58,7 @@
     <dependency>
     <dependency>
       <groupId>org.postgresql</groupId>
       <groupId>org.postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <artifactId>postgresql</artifactId>
-      <version>42.7.5</version>
+      <version>42.7.6</version>
     </dependency>
     </dependency>
 
 
     <dependency>
     <dependency>

+ 17 - 3
frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java

@@ -5,6 +5,7 @@ import com.zaxxer.hikari.HikariDataSource;
 import io.avaje.config.Config;
 import io.avaje.config.Config;
 import io.avaje.inject.Bean;
 import io.avaje.inject.Bean;
 import io.avaje.inject.Factory;
 import io.avaje.inject.Factory;
+import java.util.concurrent.Executors;
 import javax.sql.DataSource;
 import javax.sql.DataSource;
 
 
 @Factory
 @Factory
@@ -22,8 +23,21 @@ public class HikariFactory {
       maxPoolSize = Config.getInt("postgresDefaultPoolSize");
       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);
   }
   }
 }
 }

+ 2 - 4
frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java

@@ -22,7 +22,7 @@ public class JDBCDbService implements DbService {
   }
   }
 
 
   @Override
   @Override
-  public List<World> getWorld(int num) {
+  public List<World> getWorld(int num) throws SQLException {
 
 
     String select = "select id, randomNumber from World where id = ?";
     String select = "select id, randomNumber from World where id = ?";
     List<World> worldList = new ArrayList<>();
     List<World> worldList = new ArrayList<>();
@@ -37,8 +37,6 @@ public class JDBCDbService implements DbService {
           worldList.add(new World(rs.getInt("id"), rs.getInt("randomNumber")));
           worldList.add(new World(rs.getInt("id"), rs.getInt("randomNumber")));
         }
         }
       }
       }
-    } catch (SQLException e) {
-      throw new RuntimeException(e);
     }
     }
 
 
     return worldList;
     return worldList;
@@ -55,7 +53,7 @@ public class JDBCDbService implements DbService {
         ResultSet rs = pstm.executeQuery()) {
         ResultSet rs = pstm.executeQuery()) {
 
 
       while (rs.next()) {
       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));
       fortuneList.add(new Fortune(defaultFortuneId, defaultFortuneMessage));
     }
     }

+ 1 - 1
frameworks/Java/avaje-jex/src/main/resources/application.properties

@@ -1,6 +1,6 @@
 physicalTag=Citrine
 physicalTag=Citrine
 cloudTag=Azure
 cloudTag=Azure
 
 
-postgresPhysicalPoolSize=56
+postgresPhysicalPoolSize=64
 postgresCloudPoolSize=16
 postgresCloudPoolSize=16
 postgresDefaultPoolSize=10
 postgresDefaultPoolSize=10

+ 1 - 1
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.serverName=tfb-database
 dataSource.portNumber=5432
 dataSource.portNumber=5432
 dataSource.user=benchmarkdbuser
 dataSource.user=benchmarkdbuser