Quarkus Redis 客户端正在创建大量连接

问题描述 投票:0回答:1

在我的 quarkus redis 客户端中,我创建的连接数量超出了连接池应允许的数量。我不知道为什么会发生这种情况。我的连接池有

maxPoolSize = 6 maxPoolWaiting = 24
,但我的 elasticache 服务显示我当前分片上的连接数已达到 1.4k 和 700。

为什么会发生这种情况?如何限制我的 quarkus 客户端创建的连接数量?如此大量的连接导致缓存的 CPU 使用率很高,这不利于扩展。

我正在使用

   <quarkus.platform.version>2.16.4.Final</quarkus.platform.version>
这是我一直用来自定义 RedisOptions 的代码。

    @Override
    public void customize(String clientName, RedisOptions options) {
        NetClientOptions netOptions = options.getNetClientOptions();
        netOptions.setSsl(true).setHostnameVerificationAlgorithm("HTTPS")
                .setReconnectAttempts(reconnectAttempts).setReconnectInterval(reconnectInterval).setConnectTimeout(connectTimeout)
                .setTcpKeepAlive(true).setIdleTimeout(5000).setIdleTimeoutUnit(TimeUnit.MILLISECONDS);
    }

这就是我在代码中使用 RedisClient 的方式


    @Inject
    public CacheService(
            @RedisClientName("cache") @NotNull ReactiveRedisDataSource reactiveRedisDataSource,
    ) {
        commands = reactiveRedisDataSource.value(byte[].class);
        keyCommands = reactiveRedisDataSource.key();
}

    public Uni<Optional<Item>> getItem(String key) {
        return commands.get(key).onItem().transform("turnFromBytestoItem");
    }

这是我在 application.properties 中的连接逻辑

quarkus.redis.cache.hosts=rediss://${HOST:localhost}:6379
quarkus.redis.cache.client-type=cluster
quarkus.redis.cache.replicas=share
java redis quarkus vert.x amazon-elasticache
1个回答
0
投票

通过从

 <quarkus.platform.version>2.16.4.Final</quarkus.platform.version>
升级到 quarkus 3.2 版,我能够极大地帮助解决这个问题。我的连接数从产品中的最大 6k 下降到产品中的最大 300。此外,引擎 CPU 从 3% 下降到 0.5%。然而,通过升级,我确实开始获得更多缓存未命中,这就是我现在正在解决的问题。

© www.soinside.com 2019 - 2024. All rights reserved.