Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   HELPME Incremento en el Uso del CPU FireBird (https://www.clubdelphi.com/foros/showthread.php?t=25427)

Abel Garcia 22-09-2005 07:54:14

HELPME Incremento en el Uso del CPU FireBird
 
Hola a todos.
Estoy utilizando FireBird 1.5 y tengo el siguiente Problema:

Tango una aplicacion la cual hace uso de una tabla Con n campos.
Esta apliaccion la funcion que tiene es la de Almacenar los eventos sucedidos en dicha tabla YA saben Timepo del suceso Nombres Etc.
Para poder probar la efectividad del almacenado de cada suceso y poder obervar lo que sucede con el manejo del archivo fisico en cuestion del tamaño Etc.
Intente que la propia aplicacion generara un evento cada 1 Seg y asi en su tiempo escribiera los eventos en dicha tabla, Para esto el problema es que cuando comienza escribiendo los eventos el uso del cpu es casi nulo, pero conforme pasa el tiempo el uso del cpu se va incrementando, como si el servidor de Firebird tardase mas y mas cada que pasa el tiempo. en aprox una hora el uso del Cpu es casi del 100 % en tansolo añadir un registro mas, Pareseria que el problema esta en mi apliacion por lo cual cerrando la aplicacion y volviendo a comenzar deberia restableser el uso del CPU al porcentaje inicial y volver a incrementar conforme pasa el tiempo, pero esto no es asi, Si cuando cerre la aplicacion el uso del cpu estaba por un valor como 70 % y corro la aplicacion vuelve a usar el CPU casi al mismo nivel de 70 % y conforme pasa el tiempo lo incremeta a partir de ese punto.
Despues de esto intente realizar un Backup de la Base de datos y despues un restore eliminando la pasada "LENTA BASE DE DATOS (VAMOS EL ARCHIVO GDB)" y vuelvo a correr la aplicacion y Voala el uso del CPU vuelve a comenzar en digamos un 5 % pero conforme pasa el tiempo vuelvo al mismo lugar, ya intente lo mismo con Interbase y pasa lo mismo, no logro mantener el uso del CPU constanate QUE PASA....:mad:

En la base de datos para la insercion de un registro uso un Procedimieto
Estoy tambien usando los IB de Borland y algo que pudiera ser el causante tavez es que tengo un procedimiento que cuando anexo un registro a la tabla
de los eventos checa su medida y elimina los registros mas antiguos para limitar la medida de la base de datos. Este procedimiento lo ejecuto en la base de datos cada vez que intento anexar un registro, por medio de algunas herramientas he sensado que este procedimiento no es el que tarda cada vez mas y mas sino que el procedimiento que se va tardando cada vez mas es la insercion..

:confused: huy una expliacion bastante larga, espero no ser aburrido y talvez esto le sirva a alguien mas que tenga un problemas similar. y bueno si alguien pudiera ayudarme se lo agradeceria mucho ya casi estoy agotando mis ultimos recursos talvez sea algo facil.

Apropocito Que tal esta MySQL server contra FireBird ?
no conosco MySQL y me gusta FireBird Pero ustedes comprenderan que estoy desesperado....
Muchas Gracias.

Casimiro Notevi 22-09-2005 09:34:58

Creo entender que al insertar un registro generas un registro del evento generado?, entonces al insertar el registro del evento generado volverás a insertar otro registro con el registro del evento generado... es un bucle sin fin, ¿o no lo he entendido bien?

Rufus 22-09-2005 10:38:44

Bueno, podríamos ir por partes. En primer lugar, si el sistema es windows te recomiendo que cambies la extensión del archivo de .GDB a otra, por ejempo .FDB. Aunque esto no solucione el problema es muy recomendable hacerlo de todas maneras.

Hazlo y nos cuentas.

felixgo 22-09-2005 12:37:41

Utilizas una trasación para cada inserción o haces todas en la misma transación?

AdrianD 22-09-2005 13:20:30

En la transaccion trabajas con commit o commitretaining, este ultimo va consuminedo recursos del sistema, luego si insertas varios registros en un periodo corto de tiempo, te vas quedando sin recursos

ferysil2003 22-09-2005 16:58:54

¿Inicias la transaccion y la cierras con commint despues de insertar cada registro?. Si no es así pruebalo y verás.

Abel Garcia 22-09-2005 23:06:00

Asi es Inicio Transaccion y Termino Con Comit Despues de Cada insercion de un registro, Ademas lo tengo encerrado en un blucle Try __finally Para detectar
Cualquier error, Cada escritura la estoy Verificando con un Trace Debuger a nivel de windows.

Si utilizo Windows.

La idea es Cada Segundo Inserto un registro, tomando encuenta que en la pila de insercion de registro a la Base de Datos nunca Se encremente de tal forma
Que cada Transaccion iniciada sea cada vez mas grande o con mas Registros a insertar
Por lo general Cada Segundo inicio una Transaccion y entonces escribo a la base de datos todos los registro en la pila de memoria en ese momento.
Por lo general Cada Segundo Inicio una transaccion con digamos unos 2 a tres registros cuando acaba de iniciar la aplicacion generadora.
El problema es que conforme pasa el tiempo, la escritura de cada registro le cuesta mas y cada vez se tarda mas en la transaccion, terminando con utilizar todo el CPU.
en casi aproximadamente una hora, Cuando ya paso un tiempo de casi 25 min desde el inicio los mismos Tres registros que al principo se tardava unos 2 mls a los 25 min ya se tarda como 100 mls y asi sucesivamente...
Como la ven Que cren que este pasando.


Gracias por su ayuda.

Para todo esto solo es una aplicacion la que se encuentra generando este eveto.


La franja horaria es GMT +2. Ahora son las 19:21:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi