2

在 Spring 中,我有一个 jedisConnFactory 和一个像这样的 jedisPoolConfig bean

    <bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="127.0.0.1" p:port="6379" p:poolConfig-ref="jedisPoolConfig" />

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal" value="${redis.pool.maxTotal}" />
        <property name="maxIdle" value="${redis.pool.maxIdle}" />
        <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" />
    </bean>

向服务器发送数据就可以了。但我不知道如何验证 JedisPoll 是否正常工作。

如何查看活动、空闲连接的数量?

4

2 回答 2

2

我们可以通过 Java 反射获得指标:

      Field poolField = JedisConnectionFactory.class.getDeclaredField("pool");
  poolField.setAccessible(true);
  Pool<Jedis> jedisPool = (Pool<Jedis>)poolField.get(connectionFactory);
  int activeNum = jedisPool.getNumActive();
  int idleNum = jedisPool.getNumIdle();
  int waitNum = jedisPool.getNumWaiters();
  long maxBorrowWaitMs = jedisPool.getMaxBorrowWaitTimeMillis();
  long meanBorrowWaitMs = jedisPool.getMeanBorrowWaitTimeMillis();

输出:

pool monitor - activeNum=0,idleNum=1,waitNum=0, maxBorrowWaitMs=7, meanBorrowWaitMs=0
于 2018-10-12T07:19:47.827 回答
0

确保在您的池配置中启用了 JMX。请注意,也可以传递 GenericObjectPoolConfig,这使您可以完全控制对象池。然后,您可以使用 jconsole 通过 JMX 连接到您的应用程序,并且可以跟踪连接池的实际状态。

于 2016-05-11T12:19:54.090 回答