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 >