dakujem za reakciu, vydal som sa smerom, ktory ste navrhli a zacal som
skusat, co berie connections z pool-u a nevracia ich, a dosiel som na
to, ze ked sa vykonava nasledovny kod:

redisTemplate.getConnectionFactory().getConnection().openPipeline();            
redisTemplate.boundZSetOps(hourSet).incrementScore(key, 1.0);
redisTemplate.boundZSetOps(ARTICLE_VIEWS_4HOUR_SET).incrementScore(key, 1.0);
redisTemplate.boundZSetOps(ARTICLE_VIEWS_SET).incrementScore(key, 1.0);
redisTemplate.getConnectionFactory().getConnection().closePipeline();

tak po 8-10 spusteniach aplikacia "zamrzne".

vygooglil som nasledony problem:
http://forum.springsource.org/showthread.php?113738-spring-data-redis-transactions

ktory je velmi podobny ako mam ja.

hore vedeny kod som zmenil na:

Object o = redisTemplate.execute(new RedisCallback<Object>() {
                        @Override
                        public Object doInRedis(RedisConnection con)
                                        throws DataAccessException {
                                con.openPipeline();
                                con.zIncrBy(hourSet.getBytes(), 1.0, 
key.getBytes());
                                con.zIncrBy(ARTICLE_VIEWS_4HOUR_SET.getBytes(), 
1.0, key.getBytes());
                                con.zIncrBy(ARTICLE_VIEWS_SET.getBytes(), 1.0, 
key.getBytes());
                                con.closePipeline();
                                return null;
                        }                       
                });

a zatial to vyzera ze problem som vyriesil, este to potestujem, ci bol
skutocne toto problem.

Ivan

2013/3/23 Petr Janata <petrjan...@gmail.com>:
> Pisu jen ze zkusenosti:K tomu GenericObjectPool,
> muzou v nem byt ruzne typy objektu, kdyz maji spolecny superclass(ve vasem
> pripade Connection?). Metoda borrow se da volat i s klicem, ktery urci typ
> vraceneho objektu.
> Kdyz jsou vsechny objekty z poolu vypujcene, dalsi volani borrow defaultne
> blokuje a ceka na vraceni objektu.
> Zkontrolujte, ze se connections obravdu vraceji do poolu pomoci spravne
> metody(returnObject?). Alternativne zmente strategii pri pool exhaustion.
>
> On Mar 23, 2013 10:42 AM, "Ivan Polak" <ivan.po...@f4s.sk> wrote:
>>
>> ahojte,
>>
>> vo webovej aplikacii mam problem s pripojenim na DB (PostgreSQL) a na
>> noSQL REDIS, pomocou connectoru JEDIS, pouzivam tomcat 7.0.29.
>>
>> aplikacia po par minutach pouzivania "zastane". predpokladam, ze je
>> problem v apache commons connection pool-e.
>>
>> pouzivam:
>>
>> - pripojenie na REDIS pomocou JEDIS connector (jedis-2.1.0.jar)
>> - pripojenie na PostgreSQL DB (JDBC driver: postgresql-9.1-901.jdbc4.jar).
>>
>> REDIS server version: 2.4 (windows version)
>> JEDIS version: 2.1.0
>> connection pool: apache commons pool version 1.6
>> tomcat version: 7.0.29
>>
>> po debugovani som zistil, ze sa pouziva pravdepodobne jeden connection
>> pool a v triede:
>>
>> org.apache.commons.pool.impl.GenericObjectPool, v funkcii
>>
>> public T borrowObject() throws Exception {
>> ...
>> if (latch.getPair() == null && !latch.mayCreate()) {
>> if(maxWait <= 0) {
>> latch.wait();
>>
>> pretoze latch.getPair() = null, maxWait is -1 a latch.mayCreate() ==
>> false, takze latch.wait() sa vykona, a aplikacia "zastane".
>>
>> je mozne vobec pouzivat jeden connection pool pre pripojenie na
>> PostgreSQL DB aj na pripojenie na REDIS ? nemam skusenosti s
>> pripojenim na viacere "zdroje" dat v jednej aplikacii.
>>
>> nastavenie connection pool-u je default.
>>
>> pre informaciu, pouzivanie JEDIS-u:
>>
>> 1.
>> RedisTemplate<String, String> redisTemplate = (RedisTemplate<String,
>> String>) BeanUtil.getBean("redisTemplate");
>> return redisTemplate.boundZSetOps(set).incrementScore(key , value);
>> 2.
>> RedisTemplate<String, String> redisTemplate = (RedisTemplate<String,
>> String>) BeanUtil.getBean("redisTemplate");
>> Set<Tuple> mostViewed = redisTemplate.execute(new
>> RedisCallback<Set<Tuple>>() {
>> @Override
>> public Set<Tuple> doInRedis(RedisConnection con)
>> throws DataAccessException {
>> Set<Tuple> zRangeByScoreWithScore =
>> con.zRangeByScoreWithScores(ARTICLE_VIEWS_SET.getB ytes(), 1, 10);
>> return zRangeByScoreWithScore;
>> }
>> });
>>
>> ---
>>
>> jedisConnectionFactory definicia:
>>
>> <bean id="jedisConnectionFactory"
>> class="org.springframework.data.redis.connection.j
>> edis.JedisConnectionFactory">
>> <property name="hostName" value="${redis.host}"/>
>> <property name="port" value="${redis.port}"/>
>> <property name="timeout" value="2000"/>
>> </bean>
>>
>> dakujem za akekolvek rady
>>
>> Ivan

Odpovedet emailem