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