From: | "Ing(dot) Marcos Ortiz Valmaseda" <mlortiz(at)uci(dot)cu> |
---|---|
To: | Diego Ayala <netdiego81(at)gmail(dot)com> |
Cc: | Postgres Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: IDLE in transaction |
Date: | 2010-02-08 14:40:57 |
Message-ID: | 4B702279.4000505@uci.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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
---------------------------------------------------------------------------------
Attachment | Content-Type | Size |
---|---|---|
mlortiz.vcf | text/x-vcard | 639 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Diego Ayala | 2010-02-08 14:52:13 | Re: IDLE in transaction |
Previous Message | Ing. Marcos L. Ortiz Valmaseda | 2010-02-08 14:20:36 | Re: Instalación postgresql-8.1 en Ubuntu 9.10 |