Jump to content


Photo

Incremento continuo en las transacciones


  • Please log in to reply
8 replies to this topic

#1 j0ta

j0ta

    Newbie

  • Miembros
  • Pip
  • 4 posts

Posted 15 January 2013 - 05:01 AM

Hola a todos.

Tengo desarrollada una aplicación en Delphi 5 que ataca a una BBDD firebird 2.5.

Analizando las transacciones con el Sinatica Monitor, veo que el contador de "Awaiting GC" crece continuamente, de una manera desproporcionada. Lo que conlleva que el rendimiento de la aplicación a medida que avanza el día es peor.
Realizando una prueba asilada con un solo usuario abriendo la aplicación, veo que solo con abrir el programa y dejar abierta la pantalla principal de la aplicación, el contador aumenta y aumenta, a pesar de no estar realizando ninguna acción. Cuando se cierra la aplicación, el contador se pone a cero al cabo de unos segundos. Lo mismo ocurre abriendo cualquiera de las opciones de la aplicación. Pero, si un usuario entra a primera hora en la aplicación y se deja el menú abierto, o se queda en cualquier otra ventana, está generando continuamente transacciones sin que disminuyan nunca.

Pensando que pudiera ser un problema con los componentes que utilizo para enlazar con la BBDD, he probado con dos diferentes: Zeos e IBDac, y en los dos casos el comportamiento es el mismo.

¿Sabéis a que puede ser debido este mal funcionamiento y si es algún problema de configuración del componente o del delphi?



Saludos y gracias. J.
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 15 January 2013 - 06:41 AM

Eso se debe normalmente a que no cierras las transacciones despues de usarlas, si lasa transacciones se mantienen abiertas mucho tiempo, la cola va creciendo continuamente, revisa tu código para ver donde es que dejas abiertas las transacciones.

Saludos.
  • 0

#3 j0ta

j0ta

    Newbie

  • Miembros
  • Pip
  • 4 posts

Posted 15 January 2013 - 08:34 AM

Hola. Gracias por tu respuesta.

El tema que esto ocurre con solo abrir la aplicación, sin haber hecho nada. Por lo que aún no he abierto ninguna transacción.
Lo único que se muestra es la barra de menú.


Saludos. J.
  • 0

#4 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 posts
  • LocationEspaña

Posted 15 January 2013 - 09:25 AM

Al abrir la aplicación no estableces la conexión con la base de datos ni abres tablas?
  • 0

#5 j0ta

j0ta

    Newbie

  • Miembros
  • Pip
  • 4 posts

Posted 15 January 2013 - 09:31 AM

Hola.

Si, se establece la conexión con la BBDD.


Saludos. J.
  • 0

#6 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6295 posts
  • LocationArgentina

Posted 15 January 2013 - 10:51 AM

Sin tener algo más palpable con que evaluar y ver va a ser difícil que podamos llegar a buen puerto y proponerte alguna solución.
Ha decir verdad, con lo que has dicho nos pones a adivinar porque no aclara el panorama... todo lo contrario: lo oscurece. ¿Podemos ver algo de tu código? ¿Que componentes empleas, además de Zeos e IBDac? ¿Cómo tienes configurado los componentes?

Saludos,
  • 0

#7 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 17 January 2013 - 02:53 AM

Igual usas un timer para preguntar a la BD alguna cosa y mostrarla en tu menú, yo probaría a no abrir la BD al iniciar la aplicación y luego si al entrar al menú te da algún error, ese error sería en la zona que deja transacciones abiertas.
  • 0

#8 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 17 January 2013 - 03:07 AM

¿ Estás seguro que tu aplicación no realiza ningún proceso en segundo plano ?, tiene el aspecto de que periódicamente lanzas una consulta, y siempre desde una misma transacción que no se cierra en toda la ejecución de tu aplicación.

  • 0

#9 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 17 January 2013 - 03:15 AM

Seguro que el Sinatica Monitor (no lo he usado) te dice cuales son las transacciones que tienen pendientes de realizar un Garbage Collection, y cuales son las sentencias SQL que han ejecutado (esto te servirá para identificar el proceso que lanza esas consultas en segundo plano en tu aplicación).

Si no puedes ver como averiguarlo en el Sinatica Monitor, consulta directamente las tablas de Monitorización de Firebird, las cuales te indican las transacciones y comandos activos en el Servidor. En la carpeta \doc de Firebird puedes encontrar un archivo que te explica su funcionamiento, es el documento : README.monitoring_tables.txt

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.