@shinyaz

Spring Boot + HikariCP ではノードベース ElastiCache でもウォームアップが効く

JDBC Wrapper の Remote Query Cache Plugin をノードベース ElastiCache(TLS 有効)で使う場合、素の JDBC テストでは初回タイムアウトが発生せず、ウォームアップは不要だった(第3回記事)。

ところが Spring Boot + HikariCP 経由だと、ウォームアップなしの初回リクエストが 2443ms かかった。HikariCP のコネクションプール初期化 + TLS ハンドシェイク + キャッシュプラグイン初期化のオーバーヘッドが加わるためだ。

ApplicationRunner でダミークエリを発行してこれらの初期化を事前に済ませると、初回リクエストが 264ms に改善した。

Java
@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 環境では構成に関わらずウォームアップを入れた方がよい。

共有する

田原 慎也

田原 慎也

ソリューションアーキテクト @ AWS

AWS ソリューションアーキテクトとして金融業界のお客様を中心に技術支援をしており、クラウドアーキテクチャや AI/ML に関する学びをこのサイトで発信しています。このサイトの内容は個人の見解であり、所属企業の公式な意見や見解を代表するものではありません。