From: | Diego Ayala <netdiego81(at)gmail(dot)com> |
---|---|
To: | Ing(dot) Marcos Ortiz Valmaseda <mlortiz(at)uci(dot)cu> |
Cc: | Postgres Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: IDLE in transaction |
Date: | 2010-02-08 15:06:08 |
Message-ID: | 6b81cb151002080706u476fc0b8ya3636e073b59c3d@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Muchisimas gracias x la ayuda, lo buscare ahora mismo, posiblemente ahi este
el problema de los IDLE in transaction que estoy teniendo..
2010/2/8 "Ing. Marcos Ortiz Valmaseda" <mlortiz(at)uci(dot)cu>
> Diego Ayala wrote:
>
>> muchas gracias x tu ayuda, esa es la discusión que tengo con los
>> desarrolladores ya que ellos creen que la solucion debe estar de parte de
>> PostgreSQL, se utiliza Hibernate, JBoss y el Framework SEAM, con
>> programación JAVA.
>>
>> 2010/2/8 "Ing. Marcos Ortiz Valmaseda" <mlortiz(at)uci(dot)cu <mailto:
>> mlortiz(at)uci(dot)cu>>
>>
>>
>> Diego Ayala wrote:
>>
>> Buenos dias listeros, quisiera saber si podrian ayudarme, ya
>> que estoy con este problema desde mas de 2 semanas, ya busque
>> algunos topicos referentes a esto, pero no he podido
>> solucionarlo, hablando con los desarrolladores, me dicen que
>> las tablas que quedan afectados son de solo lectura, que no se
>> ejecuta ninguna transaccion, en mi postgresql.conf tengo
>> configurados los parametros
>> tcp_keepalives_idle = 900 # TCP_KEEPIDLE, in
>> seconds;
>> # 0 selects the system
>> default
>> tcp_keepalives_interval = 90 # TCP_KEEPINTVL, in
>> seconds;
>> # 0 selects the system
>> default
>> tcp_keepalives_count = 5, pero al parecer esto no surje efecto
>> ya que algunas transacciones estan x horas y lo mato
>> utilizando el pgadmin, la version de postgresql que tengo es
>> la 8.4.1 sobre CenOS 5.3 de 64 bits.
>>
>> Hay alguna manera de matar o cerrar una transaccion que tiene
>> estado IDLE IN TRANSACTION hay alguna forma de poner límite
>> por usuario o un timeout para las transacciones bloqueadas y
>> que sólas vayan muriendo si quedaron así zombies, como podria
>> hacer esto, gracias de antemano x la ayuda..!!!
>>
>> -- Diego Ayala
>>
>> Diego, según me estaba explicando una vez, en la vista pg_locks
>> del information_schema, tu puedes averiguar cuáles son las
>> transacciones que están IDLE con la consulta:
>> SELECT locktype, database, relation, virtualxid, pid, mode,
>> granted FROM pg_locks;
>>
>> locktype | database | relation | virtualxid | pid | mode
>> | granted
>>
>> ------------+----------+----------+------------+-------+-----------------+---------
>> relation | 11564 | 10969 | | 12633 |
>> AccessShareLock | t
>> virtualxid | | | 5/11974 | 12633 |
>> ExclusiveLock | t
>> (2 rows)
>>
>>
>> Luego con : SELECT * from pg_stat_activity:
>>
>> datid | datname | procpid | usesysid | usename |
>> current_query | waiting | xact_start |
>> query_start | backend_start |
>> client_addr | client_port
>>
>> -------+-------------+---------+----------+----------+---------------------------------+---------+---------------------------
>>
>> ----+-------------------------------+-------------------------------+--------------+-------------
>> 16420 | uci_db | 11760 | 16386 | dba | <IDLE>
>> | f | |
>> 2010-02-08 09:10:05.683647-05 | 2010-02-08 08:52:24.164219-05 |
>> 10.36.18.56 | 1399
>> 16420 | uci_db | 11909 | 16386 | dba | <IDLE>
>> | f | |
>> 2010-02-08 08:59:21.524631-05 | 2010-02-08 08:59:21.408665-05 |
>> 10.36.18.56 | 3088
>> 16421 | uci_test_db | 12328 | 16386 | dba | <IDLE>
>> | f | |
>> | 2010-02-08 09:18:58.732188-05 |
>> 10.36.18.107 | 1172
>> 11564 | postgres | 12633 | 10 | postgres | select *
>> from pg_stat_activity; | f | 2010-02-08 09:33:32.137225
>> -05 | 2010-02-08 09:33:32.137225-05 | 2010-02-08 09:31:53.54647-05
>> | | -1
>> (4 rows)
>>
>> Puedes ver en el campo current_query, que los procesos 11760,
>> 11909 y 12328 que están IDLE.
>>
>> Lo que se recomienda en este caso es:
>> 1- Cerrar las transacciones lo más rápido posible.
>> 2- Arreglar la aplicación en caso de que deje abiertas las
>> transacciones(Michas veces es causa de los desarrolladores, por
>> eso el PostgreSQL DBA debe estar presente en el desarrollo para
>> guiarlos en el proceso)
>>
>> Otra observación:
>> En caso de que usen algún ORM para el desarrollo, hay muchos que
>> no hacen un uso eficiente de las transacciones en PostgreSQL, y
>> muchas veces bloquean la tabla o el registro; y entonces lo que
>> toca es corregir el ORM o no usarlo.
>>
>> Saludos, espero que te ayuden mis comentarios en algo.
>>
>> --
>> --------------------------------------------------------------------------------
>> "Para ser realmente grande, hay que estar con la gente, no por
>> encima de ella."
>>
>> Montesquieu
>> Ing. Marcos Luís Ortíz Valmaseda
>> PostgreSQL System DBA && DWH -- BI Apprentice
>>
>> Centro de Tecnologías de Almacenamiento y Análisis de Datos (CENTALAD)
>> Universidad de las Ciencias Informáticas
>>
>> Linux User # 418229
>>
>> -- PostgreSQL --
>> "TIP 4: No hagas 'kill -9' a postmaster"
>> http://www.postgresql-es.org
>> http://www.postgresql.org
>> http://www.planetpostgresql.org
>>
>> -- DWH + BI --
>> The Data WareHousing Institute
>> http://www.tdwi.org
>> http://www.tdwi.org/cbip
>>
>> ---------------------------------------------------------------------------------
>>
>>
>>
>>
>> --
>> Diego Ayala
>>
> Hay un blog que tiene bien explicado como usar Hibernate con PostgreSQL de
> manera eficiente. Son como buenas prácticas, ahora no sé donde está. Si
> tuviera un poco de tiempo, te lo buscaría pero estoy ahora en medio del
> trabajo. Búscalo en Google.
>
> Otra recomendación: En caso que estén trabajando con Java, les recomiendo
> Grails, framework de desarrollo web relativamente nuevo,pero muy completo y
> funcional y está basado en Spring, Hibernate, y otros proyectos. Está
> desarrollado con el lenguaje Groovy, el cual corre sobre la máquina virtual
> de Java y además ejecuta código Java igualmente.
>
> http://www.grails.org --: The search is over
>
>
>
> --
>
> --------------------------------------------------------------------------------
> "Para ser realmente grande, hay que estar con la gente, no por encima de
> ella."
>
> Montesquieu
> Ing. Marcos Luís Ortíz Valmaseda
> PostgreSQL System DBA && DWH -- BI Apprentice
>
> Centro de Tecnologías de Almacenamiento y Análisis de Datos (CENTALAD)
> Universidad de las Ciencias Informáticas
>
> Linux User # 418229
>
> -- PostgreSQL --
> "TIP 4: No hagas 'kill -9' a postmaster"
> http://www.postgresql-es.org
> http://www.postgresql.org
> http://www.planetpostgresql.org
>
> -- DWH + BI --
> The Data WareHousing Institute
> http://www.tdwi.org
> http://www.tdwi.org/cbip
>
> ---------------------------------------------------------------------------------
>
>
--
Diego Ayala
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2010-02-08 15:17:53 | Re: IDLE in transaction |
Previous Message | Ing. Marcos Ortiz Valmaseda | 2010-02-08 15:05:18 | Re: IDLE in transaction |