Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2021
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Caída o error de Firebird que no logro entender

Estimados amigos ,, desde hace un par de meses estoy experimento este tipo de error en firebird , servidor de 16 g en ram disco de 1 T , ubuntu 18 , si alguien me puede dar una luz , tenemos 10 maquinas trabajando en forma permanente 8 horas diarias en facturacion la carga es la misma de hace dos meses atras no hay nada distinto solo que ahora sale ese error y se reinicia el servicio de firebird

server-casanova Sat Feb 13 15:47:46 2021 Shutting down the server with 68 active connection(s) to 2 database(s), 0 active service(s)


Tambien en el log de firebird encontramos siempre este mensaje

INET/inet_error: read errno = 104

Gracias por su tiempo
__________________
IVAND

Última edición por IVAND fecha: 13-02-2021 a las 22:03:07. Razón: Mejorar la pregunta
Responder Con Cita
  #2  
Antiguo 14-02-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Así, sin más información, diría que se está ejecutando un script para detener el servidor.
Algo así como gfix -shut
Mira los parámetros que admite.
También puede ser que esté dañada la BD, no debería cerrarse por eso, pero al menos verifícala con gfix.

Cita:
La desconexión del cliente del servidor. Si el texto de error contiene con (Cliente), significa que la aplicación cliente perdió su conexión con el servidor y anotó este hecho en el registro.
Si el texto de error contiene (Servidor), significa que el servidor perdió la conexión con el cliente y lo informó al firebird.log.
La razón habitual del error 10054 (104 en Linux) es una conexión inestable, por ejemplo, Wi-Fi débil.
Además, es posible ver este error si una aplicación cliente no cierra explícitamente la conexión de la base de datos, es decir, no hay un comando explícito como 'MyDB.Active: = false' al cerrar el software.
Responder Con Cita
  #3  
Antiguo 16-02-2021
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
http://tracker.firebirdsql.org/browse/CORE-4680
Buscando por ahi algo de lo mio indican que es algo con los eventos , salvo que no este entendiendo bien lo que ahi indican , voy a probar quitando eso , gracias
__________________
IVAND
Responder Con Cita
  #4  
Antiguo 08-07-2021
Avatar de NetVicious
NetVicious NetVicious is offline
Registrado
 
Registrado: sep 2010
Posts: 1
Poder: 0
NetVicious Va por buen camino
Ese error dice que hay un problema de comunicación entre el cliente (la aplicación) y el servidor.


O bien es un problema de red, o lo más seguro que sea es que estás intentando conectar con un servidor que utiliza la versión 3.0 pero estás utilizando una librería fbclient.dll más vieja (por ejemplo de la 2.5).


Mira la versión del motor de base de datos e intenta poner al lado del ejecutable de delphi la DLL de cliente de la misma versión.
Responder Con Cita
  #5  
Antiguo 04-06-2022
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Estimados amigos
Abro nuevamente este tema pues ha vuelto a aparecer esas caidas de firebird 2.5 aun no logro entender , no se si a algun companero le ha pasado , cualquier cosa estoy pendiente a sus consejos


en github hay algo del tema de un bug de firebird , pero debido a mi poca experiencia no logro entender

https://github.com/FirebirdSQL/firebird/issues/4989

lo q hago ahora es reiniciar firebird ,pero se hay una consulta que he revisado que se tarda un mundo en ejecutarse cada vez que pasa ese problema
Código SQL [-]
select cod_producto,nombre,precioa,preciob,precioc,preciod,PORC1,UBICACION,APLICA_IVA,FRACCION,
p.saldo_fac,operativo,pordes,
case aplica_iva
  When 'S' Then
      Precioa+(Precioa*e.iva/100)
  Else
     Precioa
End PrecioIvaA ,
case aplica_iva
  When 'S' Then
      Preciob+(Preciob*e.iva/100)
  Else
     Preciob
End PrecioIvaB ,
case aplica_iva
  When 'S' Then
      PrecioC+(PrecioC*e.iva/100)
  Else
     PrecioC
End PrecioIvaC ,
case aplica_iva
  When 'S' Then
      PrecioD+(PrecioD*e.iva/100)
  Else
     PrecioD
End PrecioIvaD,cod_barra,p.key_producto,p.peso,p.bloqueo_cambio_precio,p.tipo_accion,z(p.saldo_fraccion) saldo_fraccion
,(select t.descripcion from tabla t where t.key_hijo=p.cod_marca) Marca
From   empresa e,producto p
Where e.key_empresa=p.key_empresa
and   p.key_empresa=:Key_empresa
And    Upper(nombre) like :Nombre

Esta consulta se ejecuta en la aplicacion mas usada en esa empresa , cuando esa consulta se ejecuta de manera normal ya todo vuelve a su funcionamiento normal
Eso es lo que he nota

Nota Importante : No uso Eventos en mi base de datos

Conocen uds algun sitio o empresa que me pueda evaluar este problema estoy seguro que se trata de algun problema de base y no de mi sistema , ya he revisado todo los problemas de transacciones de deadloop y todo eso

Agradecido quedo en espera de sus comentarios
__________________
IVAND
Responder Con Cita
  #6  
Antiguo 04-06-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hemos indicado algunas posibilidades de lo que puede suceder, no tiene nada que ver con una sentencia sql, y no has comentado nada al respecto.
Además dices que "cuando esta sentencia se ejecuta de una manera normal", ¿eso qué quiere decir? ¿hay alguna manera anormal de ejecutarla?
Y pasas un enlace a un problema deadlock, ¿tienes ese problema también? porque no habías dicho nada de eso.

Ese código de error, como hemos indicado antes, tiene que ver con problemas de conexión entre algún cliente y el servidor.
Además necesitamos mucha más información para poder ayudar con más seguridad, por ejemplo: cuando dices que firebird se cae (aunque yo nunca he visto que se caiga firebird), ¿nadie tiene acceso al servidor o algún cliente sí tiene acceso al servidor? Si nadie tiene acceso al servidor entonces es posible que sea problema de red en el propio servidor.
En fin, lo dicho, que con la información que nos has dado solamente podemos indicar un culpable: tarjeta de red, cable de red, wifi (si hay conexiones wifi), etc.
Responder Con Cita
  #7  
Antiguo 04-06-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Porque supongo que no tendrás limitado el número de conexiones, ¿habéis cambiado algo en la configuración?
De todas formas eso limitaría conexiones, pero no detiene el servidor.

Recuerdo una vez en una empresa que alguien había creado una conexión ssh con el servidor para hacer mantenimiento desde remoto, y cuando cerraba la conexión ssh tenía puesto que se reiniciara el servidor.
Responder Con Cita
  #8  
Antiguo 05-06-2022
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Hola Casimiro , nuevamente gracias por la atencion

A ver te explico lo mejor q pueda , en el log de firebird me indica que el servidor se detiene (Caer es un termino que usamos para indicar una parada del servidor ) , ahora no entiendo es porque sucede eso , segun lo que indican es un bug de firebird que aun se extiende a la version 3 , toca reiniciar el servicio para q el sistema funcione nuevante , pero lo que he notado que en esa consulta despues que me da ese error , se pone extremadamente lenta , pasando unos 5 minutos ya se puede trabajar nuevamente rapido con todo el sistema

La sentencia no tiene nada que ver en realidad , solo indico que mientras el servidor no se detenga de esta manera esa consulta funciona bien , cuando se detiene con el error que indico , se vuelve extremadamente lenta una vez que el servicio se reinicia , pareceria como q los indices se danan o algo asi

Cable , tarjeta y esas cosas no son el problema realmente
Paso el enlace porque ahi sabe excatemente lo que me pasa a mi de vez en cuando y no entiendo porque puede pasar
Espero haber explicado un poco mejor
__________________
IVAND
Responder Con Cita
  #9  
Antiguo 05-06-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Veamos, el enlace que has puesto parece que se trata de alguien que está ejecutando una versión superserver en windows, y además una versión superserver en linux pero con wine, un "emulador" de windows. Es algo que no tiene sentido, si se usa linux entonces instala firebird para linux, pero no "inventos raros". Además el título de "deadlock" parece que no tiene nada que ver con lo que cuenta después.
También le contestan repetidamente que no logran reproducir/repetir el problema que tiene esa persona en su sistema y le indican que puede ser algo producido en su entorno.
Además habla de "eventos", algo que dices que tú no usas.

Como no puedo ver el sistema que tienes instalado, puedo dar algunos consejos.
- Detener todas las conexiones, y si hace falta le quitas el cable de red al servidor, para estar seguro de que nadie conecta (y si conectan por wifi, lo deshabilitas también).
- Haces una copia de la BD, y guardas la original aparte, esa ya no la toques.
- Sobre la copia haces un backup transportable (gbak -b -t ...)
- Si no ha dado ningún error es que está bien la BD. Si ha dado algún error entonces hay que solucionarlo antes de dar los siguientes pasos.
- Desinstalas la versión de firebird que tienes instalada.
- Instalas la última versión superclassic de firebird 3 (aunque yo instalaría la última de la v4), no instales la superserver, esa está más pensada para windows.
- Restauras el backup.
- En los clientes instala fbclient de la versión 3, no dejes el de la v2.

Ahora dependiendo de algunos factores que desconozco haría unos cambios:
- ¿Cuánto ocupa la BD?
- ¿Cuántos usuarios/conexiones tiene normalmente?

Si tienes muchas conexiones entonces aumenta la memoria RAM del servidor.
Algo importante, instala otro disco SSD en el servidor, y luego en la configuración de firebird (firebird.conf) cambia el directorio temporal hacia ese disco, algo como:
TempDirectories = /mnt/disk2/temp

Por lo demás, puedo decir que utilizo firebird desde que existe (y antes interbase, pues firebird salió de la versión libre interbase 6) y mi tranquilidad es total con todos los clientes, desde 1998 he instalado firebird en empresas de todos los tamaños, algunas tienen BD de muchos gigas y nadie ha llamado nunca con un problema en la BD, salvo por discos rotos y cosas así que no tiene culpa la BD. En el último trabajo son al menos 3000 clientes con varias conexiones cada una, y nadie llama por problemas con la BD.
Por eso me extraña muchísimo lo que cuentas, debe ser algo muy localizado en el entorno que tienes, pero no podemos adivinar.
Responder Con Cita
  #10  
Antiguo 05-06-2022
hoyosfelix hoyosfelix is offline
Miembro
 
Registrado: ago 2010
Ubicación: San Antonio, Paraguay
Posts: 38
Poder: 0
hoyosfelix Va por buen camino
Caida de servidor...

Hola IVAND,


Me gustaría ayudarte a resolver el problema de la caída del server.


Para entender el contexto del problema, podrías dar más datos...


Vamos a asumir que el causante de error es la consulta que enviaste.


¿Es del lado cliente?
¿Cuándo se ejecuta? Ejemplo, al momento de insert/update de una factura, al realizar commit, etc.


En sintesis pasá más info.


Saludos
Responder Con Cita
  #11  
Antiguo 06-06-2022
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Hace poco tuve un problema super-estraño con un cliente. Pero afortunadamente pude demostrar que era algo dentro de la infraestructura de su red que lo causaba, aunque no pudimos dar exactamente con que. Lo irónico es que le metieron buen dinero a todo y tienen un montón de cosas sofisticadas (como hacer un "raid de tarjetas de red"?).

La solución fue pasar la app a otra maquina y por vpn hacer la conexión con sus sistemas.
__________________
El malabarista.
Responder Con Cita
  #12  
Antiguo 15-06-2022
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias a todos por su tiempo ,

Bueno yo tambien tengo mas de 500 clientes conectados todos los dias y hasta ahora solo me pasa con este cliente , la verdad no entiendo pero se cierra el servicio de firebird (no puedo saber que consultas se estan ejecutando a ese monento inclusive nos compramos la herramienta de IBSurgeon para monitorear la base de datos me salen unas advertencia pero eso sera otro capitulo)

Reincio el servicio de firebird , pero lo raro es q el sistema se pone super super lento hasta que pasen unos 5 min y luego funciona bien , no ocurre lo mismo si se reinicia el servidor fisico ahi anda rapido asi que me imagino q cuando se reinicia firebir algo mas faltaria de hacer

Tengo unas 40 maquinas conectadas siempre ahora me vi en la obligacion de poner el sistema en otro servidor a ver que pasa

En el log de firebird sale siempre un mensaje de error 104 , hay equipos q se conectan via wifi , en la aplicacion cuando salgo cierro la coneccion a la base de datos

No se que mas probar, veremos esta semana como nos va , con la nueva instalacion firebirdss_2.5.9.27139-1_amd64.deb
Nota: Se he echo un backup y restore ningun problema en la base de datos , en firebird 3 he escuchado que tiene el mismo problema y se supone que es por un deadlook
__________________
IVAND
Responder Con Cita
  #13  
Antiguo 15-06-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No quiero parecer pedante, soberbio, engreído... pero según tus explicaciones, más seguro estoy de que el problema que tienes es por lo que te he informado al principio, y también que sigas los consejos que te he dado.
La solución no es instalar justo la versión que te he indicado que no instales


PD: Si tuvieras un problema de deadlock, el sistema lo indicaría, no te diría "error 104", sino "error deadlock".
Responder Con Cita
  #14  
Antiguo 15-06-2022
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
No para nada a ver te explico la firebird 3 no puedo instalar ahora uso rfunc y aun hay q migrar y crear funciones para poner hacer que trabaje el sistema
Los backup los he realizado no hay problema alguno

lo del deadlock lo sabemos que no te lo muestra el firebird.log digo q en mi archivo de log siempre veo ese mensaje de error 104 q segun leo es de conexion a la red

Explico lo del deadlock porqu lo lei en el articulo q te comparti y es solo porque se les presenta el mismo mensaje que a mi , talvez no sean los mismos escenarios
__________________
IVAND
Responder Con Cita
  #15  
Antiguo 16-06-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por IVAND Ver Mensaje
... en mi archivo de log siempre veo ese mensaje de error 104 q segun leo es de conexion a la red ...
Pues eso
Responder Con Cita
  #16  
Antiguo 23-06-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
¿Has probado la consulta con los datos que busca el cliente que tarda mucho?

Prueba la misma consulta con algunas variaciones

Asigna ALIAS prefijo a todos los campos para evitar alguna ambigüedad que pueda haber.

Código SQL [-]
select ?.cod_producto, ?.nombre, precioa, ?.preciob, ?.precioc, ?.preciod, ?.porc1, ?.ubicacion, ?.aplica_iva, ?.fraccion, p.saldo_fac,
       ?.operativo, ?.pordes,
       case ?.aplica_iva
         when 'S' then
             ?.precioa + (?.precioa * e.iva / 100)
         else ?.precioa
       end ?.precioivaa,
       case ?.aplica_iva
         when 'S' then
             ?.preciob + (?.preciob * e.iva / 100)
         else ?.preciob
       end ?.precioivab,
       case ?.aplica_iva
         when 'S' then
             ?.precioc + (?.precioc * e.iva / 100)
         else precioc
       end ?.precioivac,
       case ?.aplica_iva
         when 'S' then
             ?.preciod + (?.preciod * e.iva / 100)
         else ?.preciod
       end ?.precioivad,
       ?.cod_barra, p.key_producto, p.peso, p.bloqueo_cambio_precio, p.tipo_accion, z(p.saldo_fraccion) saldo_fraccion,
       (select t.descripcion
        from tabla t
        where
        t.key_hijo = p.cod_marca) marca
from empresa e
join producto p on e.key_empresa = p.key_empresa
where
p.key_empresa = :key_empresa and
upper(?.nombre) like :nombre

Prueba con JOIN, LEFT JOIN, y diferente orden de tablas

Código SQL [-]
select ... 
from empresa e
join producto p on e.key_empresa = p.key_empresa
where
/**/p.key_empresa = :key_empresa and
upper(?.nombre) like :nombre

Código SQL [-]
select ... 
from empresa e
join producto p on e.key_empresa = p.key_empresa
where
/**/e.key_empresa = :key_empresa and
upper(?.nombre) like :nombre

Código SQL [-]
select ... 
from producto p
/**/LEFT join empresa e on e.key_empresa = p.key_empresa
where
p.key_empresa = :key_empresa and
upper(?.nombre) like :nombre

Código SQL [-]
...
       ?.cod_barra, p.key_producto, p.peso, p.bloqueo_cambio_precio, p.tipo_accion, z(p.saldo_fraccion) saldo_fraccion,
       /**/t.descripcion marca/**/
from empresa e
join producto p on e.key_empresa = p.key_empresa
/*JOIN o LEFT JOIN*/
/**/join tabla t on t.key_hijo = p.cod_marca*//*
where
p.key_empresa = :key_empresa and
upper(?.nombre) like :nombre

¿Qué es la función z()?
Puede ser que esté haciendo algo que tarde mucho.
Si es una UDF, pueda que tenga un error dentro y esté tirando abajo el servidor (división por 0, por ejemplo)

¿Qué indices tienen las tablas?
Por lo menos debería haber
  • TABLA.KEY_HIJO
  • EMPRESA.KEY_EMPRESA
  • PRODUCTO.KEY_EMPRESA

¿Has probado recalcular la selectividad de los índices?
Código SQL [-]
/*Recalculo de selectividad de indice PRODUCTO_KEY_IDX de la tabla PRODUCTO*/
SET STATISTICS INDEX PRODUCTO_KEY_IDX

¿Has revisado el PLAN que devuelve la consulta?
Puede que te de una pista de donde pasa el tiempo buscando datos.

¿Cuantos registros tiene cada tabla?
Si utilizas LEFT JOIN podrías unir la que menos registros tiene a la que mas, para evitar recorrer la que más registros tiene.

Una posible solución es a veces transformar el SQL en un procedimiento.
Código SQL [-]
create procedure dame_datos (
    key_empresa integer)
returns (
    ...)
as
declare variable...;
begin
    for select...
        from empresa
        where
        key_empresa = :key_empresa
        into...
        order by...
    do
    begin
        for select cod_marca, ...
            from producto
            where
            key_empresa = :key_empresa
            into :cod_marca, ...
        do
        begin
            select descripcion
            from tabla
            where
            key_hijo = :cod_marca
            into :descripcion;

            -- Calculo de precios
            ---

            suspend;
        end
    end
end

/* y luego */
select * from dame_datos(:key_empresa)

Última edición por duilioisola fecha: 23-06-2022 a las 17:08:13.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Entender Firebird 3.... Neeruu Varios 4 25-04-2018 13:47:42
TRichEdit, TStringStream y cierto error que no logro "cachar"... TiammatMX OOP 2 12-05-2012 00:36:18
consulta mysql que no logro entender gulder MySQL 2 14-02-2012 14:54:51
Sigo sin entender el error... gandalf_27 C++ Builder 1 11-06-2006 16:35:46
Entender una sentencia Renees Varios 5 02-09-2005 19:35:01


La franja horaria es GMT +2. Ahora son las 16:51:00.


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
Copyright 1996-2007 Club Delphi