Re: Application hangs

Поиск
Список
Период
Сортировка
От Thomas Kellerer
Тема Re: Application hangs
Дата
Msg-id n8nlu5$vji$1@ger.gmane.org
обсуждение исходный текст
Ответ на Application hangs  (Ankur Kaushik <ankurkaushik@gmail.com>)
Список pgsql-admin
Ankur Kaushik schrieb am 22.01.2016 um 04:47:
> We are facing problem in our Live server , Applications hangs after some time
>
> Please Let me know Is this database related or Application ?
>
> Process list shows as below
>
> postgres=# select count(*) from pg_stat_activity ;
>  count
> -------
>     37
> (1 row)
>
>
> "*SELECT NULL AS TABLE_CAT*" and  "*SHOW TRANSACTION ISOLATION LEVEL*",  Type query increases as
>

If the session's state is "idle", the query shown in pg_stat_activity is the last query the session has run, not the
currentone (because the session isn't doing anything - it is idle). 

As all sessions are idle, there isn't really anything wrong here.

Regarding the query itself, I already answered that in the other thread you opened, but I'll repeat it here as well:

Those queries look suspiciously like the query that is used by DatabaseMetaData.getTables().

I think the c3p0 connection pool has a pretty stupid default configuration where the validation query (that is used to
checkif a connection is still "alive") uses exactly that call. And I also think this is configured to be called each
timea connection is returned to the pool - which imposes a huge (and unnecessary load) on the database server.   

If that is the case you should configure a different validation query that is less invasive. Something like:
preferredTestQuery="select42", once that is configure c3p0 will no longer call the (expensive)
DatabaseMetaData.getTables()method. It's one of the many reasons I don't like the c3p0 pool. I think Tomcat7's pool is
amuch better choice (I'm _not_ talking about DBCP, but about the new "native" pool introduced with Tomcat7) 

I also recommend to _not_ test the connections when the pools hands them out or if they are returned, because those
validationquery will then put too much load on the database server.  

It's better to configure the pool to validate the connections when they are idle, **not** when they are taken out or
returnedto the pool.  
Again, how you configure this, depends on the pool you are using.


В списке pgsql-admin по дате отправления:

Предыдущее
От: jaime soler
Дата:
Сообщение: Re: Application hangs
Следующее
От: John Scalia
Дата:
Сообщение: Re: 9.5 repo question