Весенние данные Redis. Как узнать номер Активного, Свободного Соединения?
Весной у меня есть jedisConnFactory и боб jedisPoolConfig, как это
<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.
Как проверить количество активных, незанятых соединений?
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
Убедитесь, что JMX включен в вашей конфигурации пула. Обратите внимание, что GenericObjectPoolConfig также может быть передан, что дает вам полный контроль над вашим пулом объектов. Затем вы можете подключиться к своему приложению через JMX с помощью jconsole и отслеживать фактическое состояние вашего пула соединений.