Firebird21

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Pronto un nuevo post en tu Blog favorito: firebird21.Wordpress.com

Autor Tema: Problemas de rendimiento con Firebird (desesperados)  (Leído 1228 veces)

0 Usuarios y 1 Visitante están viendo este tema.

oskarssj5

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 10
    • Ver Perfil
Problemas de rendimiento con Firebird (desesperados)
« en: Diciembre 20, 2017, 06:10:12 am »

Hola a todos,

En nuestra empresa tenemos la aplicación principal que trabaja con una base de datos sobre Firebird. Dicha aplicación la ejecutan los usuarios desde su propio equipo, y esta se conecta por red a la base de datos montada en el servidor de Firebird correspondiente, pero tenemos muchos problemas de rendimiento que no hay manera de solventar (desde que se puso en marcha ya hace tiempo). Lo hemos comentando con el fabricante del software, pero ellos no nos dan ninguna solución, y seguimos pensando todo esto es problema de programación, pero lo único que podemos hacer es comprobar nuestra infraestructura para ver si de aquí podemos mejorar en algo, pero hemos probando tantas cosas que no han dado resultados que ya estamos desesperados con ello...

La versión de Firebird que tenemos instalada en el servidor es la SuperClassic 2.5.3 (64 Bits), y no hemos pasado a la versión 3.0 porque depende del software, y hasta que ellos no lo actualicen, debemos seguir bajo 2.5 ¿Recomendáis pasar a la 2.5.7, o no vamos a notar nada al respecto?, ¿mejor utilizar firebird de 32 o 64bits? Los clientes que se conectan al servidor de Firebird, utilizan la librería firebird.dll con la misma versión que la del servidor (2.5.3).

Respecto a la infraestructura, el servidor de la base de datos es una máquina virtual que corre bajo una plataforma de clúster de Hyper-V, donde el servidor de Firebird se ejecuta bajo uno de los dos nodos del clúster. Las máquinas virtuales están ubicadas en una cabina de discos, y esta cabina está conectada con los servidores de Hyper-V mediante i-SCSI. El servidor de Firebird (de la base de datos) está montado con las siguientes características:
- CPU: 6 CPUs virtuales (El servidor físico donde corre esta VM tiene 2 CPUs físicas Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz [6 core(s) x64])
- RAM: 16 GB (El servidor físico donde corre esta VM tiene 64GB de RAM)
- S.O: Windows Server 2008 R2 (64Bits) (El servidor físico donde corre la VM está montado con Microsoft Hyper-V Server 2012)

Se que este tipo de infraestructuras hace que baje el rendimiento, pero creo que viendo estas características, no debería haber problema de rendimiento por hardware. Si observo el rendimiento del servidor de la base de datos, de memoria RAM sólo utiliza alrededor de 7-8GB, y la CPU virtual tan sólo un uso de entre 5-10%. Viendo esto llego a pensar que el problema es que Firebird o la aplicación en cuestión no aprovechan para nada el hardware, y puedo pensar que Firebird no se lleva bien con hardware de Servidores (CPUs Xeon, etc...). Para descartar esto, lo que hicimos fue probar de montar la misma versión de Firebird en un servidor físico, y la aplicación también montada localmente en este servidor IBM con 32GB de RAM, Windows Server 2012 (x64), y CPU Intel Xeon.... pero aunque se notara una mejora, esta fue mínima, casi imperceptible, de ahí lo que comentaba que parece que con hardware de servidor no se aprovechan los recursos con Firebird.. ¿os pasa lo mismo? porque después cojí, y monté el entorno en un ordenador de escritorio con Windows 7 (64 bits) con 4GB de RAM, y cual fue nuestra sorpresa, cuando el rendimiento mejoró muchísimooooo, siendo muy parecido a lo que esperamos que fuera un entorno de producción...

La base de datos actualmente ocupa unos 20GB, y para mirar de mejorar un poco el rendimiento, vamos realizando (semana si, semana no) un backup/restore para hacer un poco de limpieza, y aunque los primeros días parece que el rendimiento mejora un poco, pero sin ser aún aceptable, según pasan 3-4 días vuelve a caer en picado.... ¿Puede que no estemos usando los parámetros correctos para el backup/restore? Sirve de algo el restore para mejorar el rendimiento?
Para hacer el backup utilizamos el siguiente comando:
gbak -b -l -g -USER (user) -PAS (pas) X:\.....FDB ......FBK

para el Restore ejecutamos:
gbak -r -REP -p 16384 -FIX_FSS_M ISO8859_1 -v -user (user)  -password (pas)   X:\.....FBK   ........FDB
gfix -write sync -user (user)  -password (pas)   X:\....FDB
gfix -housekeeping 0 -user (user)  -password (pas)   X:\....FDB
gfix -sweep  -user (user)  -password (pas)   X:\....FDB

¿Son correctos estos parámetros, o estamos empeorando la BBDD? Deberíamos usar otros para optimizar la base de datos resultante?
En el foro he visto que Walter comenta que es mejor utilizar el comando "create" en vez de "replace", ¿esto afecta en el rendimiento de la base de datos?
También he visto en el foro que se habla del "Page Buffer", pero desconozco para que sirve, que es lo que hace, como se puede modificar, etc... pero comprobando con el comando Gstat, he visto que lo tenemos a 0, es normal? se debería cambiar para optimizar?:

Database header page information:
        Flags                   0
        Checksum                12345
        Generation              3509494
        Page size               16384
        ODS version             11.2
        Oldest transaction      3458809
        Oldest active           3458810
        Oldest snapshot         3458146
        Next transaction        3491067
        Bumped transaction      1
        Sequence number         0
        Next attachment ID      18418
        Implementation ID       26
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Dec 2, 2017 13:38:11
        Attributes              force write

    Variable header data:
        Sweep interval:         0
        *END*

Investigando maneras de optimizar la base de datos, encontramos la empresa IbSurgeon (que dicen ser expertos en optimización de entornos de Firebird y base de datos de Firebird), y en su web tienen colgado un fichero "firebird.conf" que dicen que está optimizado para entornos en general, para Firebird 2.5 (x64) y con el que se puede obtener una mejora de rendimiento. Lo adjunto a este mensaje para que me digáis si vale la pena, con los valores que tiene, probarlo, o si puedo modificarlo de otra mejora para optimizarlo según el servidor que os he comentado que tenemos.

Siguiendo el blog en busca de mejoras de Firebird, vi que Walter colgó un post con el tema del uso de RAM Disk, ¿de verdad serviría de algo para mejorar el rendimiento teniendo en cuenta que el servidor de Firebird es un servidor virtual montado como os he explicado antes? ¿Sería mejor poder asignar al RAM Disk mas de los 4 GB que permite asignar la versión free de la aplicación que comenta Walter, o basta con 4GB?

Por otro lado, nos gustaría poder monitorizar el rendimiento de Firebird y la BBDD para ver donde están los problemas de rendimiento. Actualmente tenemos la aplicación de Sinatica Monitor for Firebird, pero como no somos expertos en BBDD, desconocemos que significa toda la información que nos da, que podemos aprovechar de esta para analizar el rendimiento (valores, parámetros, etc...).

Perdonad que haya sido tan extenso, pero quería que vierais como está montado Firebird, que es lo que se ha probado, etc... para ver si de alguna manera podéis darnos algo e luz con este tema, porque también estéis sufriendo lo mismo, o lo hayáis sufrido, y ver si se puede sacar algo positivo, y que ya llega a ser desesperante el rendimiento tan pésimo que tenemos con Firebird, y que sobretodo, sufren los pobres usuarios cada día...

Os agradezco vuestra atención y la ayuda que nos podáis ofrecer, y enhorabuena por el blog Walter, que muchas de las pruebas que he comentado las hemos realizado gracias a tu blog.
Saludos.
« Última modificación: Diciembre 21, 2017, 02:12:12 am por oskarssj5 »
En línea


garjona

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 5
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #1 en: Diciembre 21, 2017, 05:31:02 am »

Buenos días.

Sobre el problema de rendimiento que comentas tengo bastante experiencia ya que tambien lo he sufrido, y la verdad que no hay una única solución mágica ya que el rendimiento se ve influenciado por numerosos factores.

1. Hardware: velocidad CPU, memoria RAM, velocidad discos duros, etc.

Aquí yo te aconsejo que utilices un servidor dedicado, y si puede ser no virtualizado, ya que este te va a penalizar bastante el rendimiento dependiendo de como tengas la cabina de disco conectada al servidor físico. i-SCSI es la opción mas barata pero también la mas lenta (1Gbps), si cambias a Fiberchannel mejoraras mucho el rendimiento. (8 Gpbs e incluso 16 Gbps) En caso de ser un servidor virtualizado te aconsejo que el "Page size" de la base de datos coincida con el tamño de cluster de la maquina virtual.  http://ibdeveloper.blogspot.com.es/2008/09/what-page-size-i-should-use-in-my.html

2. Software. La versión de servidor de base de datos que utilizas 2.5 es potente y fiable, este no debería ser un problema y el fichero de configuración que utilizas esta optimizado en cuanto a Page Buffers, aqui no hay una regla universal, puedes jugar con este valor y ver como afecta al rendimiento.

Un problema que veo es el tema de las transacciones abirtas que veo aqui:

        Oldest transaction      3458809
        Oldest active           3458810
        Oldest snapshot         3458146
        Next transaction        3491067

No es un problema en si,el servidor continuara funcionado,  pero podría ser indicador que el software no esta funcionando correctamente ya que este no cierra las transacciones una vez ha finalizado el proceso que las ha iniciado (hay 32257 abiertas). Esto afecta al rendimiento ya que la base de datos esta acumulando basura y el proceso sweep no se podrá iniciar automáticamente.,( efectuando un ciclo de backup/restore se soluciona). Esto puedes comentarlo con la empresa que os suministra el software para ver si ellos pueden hacer algo.

« Última modificación: Diciembre 21, 2017, 05:32:44 am por garjona »
En línea

oskarssj5

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 10
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #2 en: Diciembre 21, 2017, 06:39:36 am »

Buenos días Gargona, muchas gracias por tus comentarios.

Respecto al hardware está claro que al día de hoy no puedo cambiarlo, pero como ya comenté, no noté apenas ninguna diferencia con el servidor físico dedicado...
Lo que podré mirar será de hacer un Restore de la BBDD cambiando el "Page size" de 16384 a 4096, dado que el clúster de la máquina virtual donde está montado el servidor de Firebird está con 4k.

Lo de las transacciones es lo que me imaginaba, que depende de la programación de la aplicación, y ya lo comenté con los que nos suministran este software hace tiempo, pero ni caso... (el software está programado por ellos mismos) de ahí que decidí hacer los fines de semana el backup/restore con los gfix que os indiqué.

Cuando me hablas del "Page Buffers" respecto el fichero de configuración que utilizo, te refieres al que adjunté? entonces puedo probar este a ver que tal se comporta?

Un saludo, y gracias.
En línea

oskarssj5

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 10
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #3 en: Diciembre 27, 2017, 04:00:04 am »

Hola,

He estado probando lo del "Page buffer" pero tampoco he notado mejoría.
Si se os ocurre alguna cosilla mas para revisar o mejorar os lo agradecería. Walter, ¿alguna idea mas?

Saludos.
En línea

Jauma

  • Byte
  • **
  • Karma: +0/-0
  • Mensajes: 69
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #4 en: Enero 07, 2018, 06:39:19 am »

Como dice garjona, las transacciones abiertas es señal que la app no funciona como toca.
Tambien puede que la app, te haga muchos updates innecesarios, que en las consultas no tenga
indices adecuados, esto de los indices puedes revisar tu la bd y si ves que le
pueden faltar indices por alguna consulta que sospeches, los puedes dar de alta y ver si te mejora.
Pero yo creo que el problema mayor puden ser las transsacciones y los updates masivos.
Esto lo puedes aliviar un poco haciendo una limpieza todas las noches con una tarea programada "sweep".
Si pudieras monitorizar los comandos que envia la app a la bd, podrías saber exactamente lo que pasa,
pero yo no conozco ningún software que lo haga, aunque sospecho que algo debe de haber.
Saludos y espero que lo puedas arreglar, si encuentras la solución te agradecería que la publicaras.
En línea

oskarssj5

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 10
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #5 en: Enero 10, 2018, 02:23:50 am »

Gracias por tus comentarios Jauma.

En breve nos van a actualizar la versión de la aplicación, y también realizarán la migración de la base de datos a Firebird 3.0.
A partir de ese momento, veremos si hay alguna mejoría, tanto por la programación de la aplicación en su nueva versión, como del motor de Firebird... y aprovecharé para comentarles lo de las transacciones.

Esperaremos a ver..

Saludos.
« Última modificación: Enero 10, 2018, 02:27:46 am por oskarssj5 »
En línea

jesusmp

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 3
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #6 en: Febrero 12, 2018, 08:37:37 am »

Me pasaba algo similar y era la configuracion del RATON !!!   
Mira lo que publiqué:  http://yoforeo.com/firebird21/index.php?topic=1564.msg5203#msg5203


- Lo acabo de probar en un portatil DELL, Core I5. Entro al programa:  Lento antes de teclear nada. Desactivo el Driver INTEL HD Graphics y entonces va bien. Pero claro se pierden atributos de la pantalla grafica ..

***************   Sorpresa:  Lo he descubierto   :) *********************
!!!!!  ..... Acabo de descubrir lo que es (tras probar comentarios de blogs) Es EL RATON.
- Prueba1: Si abro la aplicación con el raton fuera de la ventana: OK-Rapido.  Si lo abro con el raton posicionado en la ventana: Mal-Lento.
- Prueba2: Definitiva. Ira a Configuracion Windows (Personalizacion, Pantalla de Bloqueo, Temas): Temas / Cursor del mouse (Pestaña Punteros): En  Esquema= Ninguno  ....y  sorpresa.....  OK-funciona rapida la aplicación. En realidad es cualquier "Tema"  EXCEPTO el "Predeterminado Windows". >:(

A ver : un ingeniero que lo explique.. ¿Qué tiene que ver el ratón con el rendimiento de carga de un programa?. Pues algo debe ser, inexplicable.
Espero que si alguien consulta esto le sirva, pues ha sido muy penoso ver como la aplicación moría de lenta durante años.
En línea

oskarssj5

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 10
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #7 en: Marzo 08, 2018, 10:11:13 am »

Hola a todos,

Mañana tendremos la nueva versión de nuestro programa (bajo Firebird 3.0.3), por tanto veremos a ver si ha mejorado el rendimiento.
¿Qué me recomendáis a la hora de instalar Firebird 3, SuperServer, SuperClassic o Classic? El número de usuarios concurrentes suele ser entre 50-80.
(las características del entorno no han cambiado respecto a las que ya indiqué en el primer mensaje del hilo).

Saludos.
En línea

Walter

  • Administrator
  • Gigabyte
  • *****
  • Karma: +17/-0
  • Mensajes: 501
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #8 en: Marzo 08, 2018, 07:16:47 pm »

Para esa cantidad de usuarios, probablemente Classic sea la mejor alternativa. De todas maneras, como las bases de datos no se ven afectadas por la arquitectura del Servidor, puedes probar uno o dos días con cada una de las arquitecturas y luego podrás decidir cual de ellas es la mejor para tu caso en particular.

Saludos.

Walter.
En línea

oskarssj5

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 10
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #9 en: Marzo 09, 2018, 03:52:51 am »

Muchas gracias pro tu aclaración Walter.
Probaré a ver que tal se comporta con una arquitectura u otra. Si no me equivoco la SuperServer en Firebird 3.0 ya era capaz de repartir la carga de una misma base de datos entre los diferentes núcleos de la CPU, no?

Saludos.
En línea

Walter

  • Administrator
  • Gigabyte
  • *****
  • Karma: +17/-0
  • Mensajes: 501
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #10 en: Marzo 10, 2018, 11:12:26 am »

Sí, así es, en las versiones 2.5.x., con SuperServer una Base de Datos solamente podía usar un núcleo. En 3.x ya no existe esa limitación.

Saludos.

Walter.
En línea

oskarssj5

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 10
    • Ver Perfil
Re:Problemas de rendimiento con Firebird (desesperados)
« Respuesta #11 en: Marzo 12, 2018, 04:29:30 am »

Perdona Walter, ¿hace falta que en Firebird 3.0 modifique el CpuAffinityMask con el número de núcleos que deseo utilizar, o ya así por defecto ya los aprovecha?
En el fichero firebird.conf veo que por defecto está así:

#CpuAffinityMask = 0
En línea
 

Enlaces

Blog de Firebird21 WebMaster