Spring Boot + HikariCP ではノードベース ElastiCache でもウォームアップが効く
JDBC Wrapper の Remote Query Cache Plugin をノードベース ElastiCache(TLS 有効)で使う場合、素の JDBC テストでは初回タイムアウトが発生せず、ウォームアップは不要だった(第3回記事)。
ところが Spring Boot + HikariCP 経由だと、ウォームアップなしの初回リクエストが 2443ms かかった。HikariCP のコネクションプール初期化 + TLS ハンドシェイク + キャッシュプラグイン初期化のオーバーヘッドが加わるためだ。
ApplicationRunner でダミークエリを発行してこれらの初期化を事前に済ませると、初回リクエストが 264ms に改善した。
@Component
public class CacheWarmupRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
try (Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("/* CACHE_PARAM(ttl=1s) */ SELECT 1")) {
rs.next();
}
Thread.sleep(5000);
}
}「ノードベースならウォームアップ不要」は素の JDBC の話であって、Spring Boot + HikariCP 環境では構成に関わらずウォームアップを入れた方がよい。
