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)
-   -   Rendimiento de Firebird 2.5.1 64bits en Centos 6.2 64 bits (https://www.clubdelphi.com/foros/showthread.php?t=77957)

briast 08-03-2012 19:10:01

Rendimiento de Firebird 2.5.1 64bits en Centos 6.2 64 bits
 
Hola.
Tenía un servidor con Centos 5.5 32bits y Firebird 1.5.6.
Dado que quería migrar a Firebird 2.5.1, esta versión requiere un kernel más actualizado y por tanto le he instalado la versión Centos 6.2. Dado que la máquina admite el S.O. de 64 bits, he procedido a instalar la versión Centos 6.2 64bits, y a continuación le he instalado Firebird 2.5.1 64 bits.
Por supuesto, las bases de datos las he descargado con un gbak y luego las he convertido a 2.5.1 de nuevo con el gbak y he cambiado el tamaño de página en la base de datos a 8192 después analizar los índices y ver que algunos tenían una profundidad mayor de 3. Ahora está todo bien en ese aspecto. La base de datos es pequeña, unos 400 mb.
Con esta configuración esperaba una mejora del rendimiento, por una parte por pasar de FB 1.5.6 a 2.5.1 y por otra por pasar de un sistema operativo de 32 a uno de 64 en una máquina que si tiene esa capacidad. Con Centos 5.5 y FB 1.5 el rendimiento era muy bueno en la aplicación.

La sorpresa ha sido que el rendimiento ha caído bastante, siendo ahora más lentas las consultas y en general la aplicación Delphi (FIBPLUS) que gestiona la BD (la cual no ha cambiado). Buscando por internet he visto que hay una incidencia tech.groups.yahoo.com/group/firebird-support/message/116138 relacionada con eso pero se sugiere poner el Forced Writes = off . Me parece un poco peligroso eso. Al parecer el problema está en la estructura ext4, pero si miramos en esta página ibphoenix.com/resources/documents/search/doc_26 no aparece ninguna incidencia relacionada con el sistema ext4.

Quisiera saber si alguien ha tenido alguna incidencia similar o si le va bien un sistema como el que yo he instalado, y si podéis indicarme algunos parámetros de configuración del Linux o de Firebird que puedan mejorar el rendimiento.
Normalmente uso la versión Superserver porque no tengo muchas conexiones simultáneas. Suelo subit el DefaultDBCache a 20480 (unos 80 megas), aunque he probado en el servidor a ponerlo incluso a 40000 y parece que el rendimiento es pero aún. Al final lo he dejado en 2048 que trae por defecto y parece que va un poco mejor, pero no lo esperado.

Gracias por vuestra ayuda.
PD: perdón por los hipervínculos pero no me deja añadirlos.

RONPABLO 08-03-2012 22:01:59

Porque no pruebas la versión super classic de firebird...

Casimiro Notevi 09-03-2012 00:59:10

Cita:

Empezado por briast (Mensaje 427173)
Dado que quería migrar a Firebird 2.5.1, esta versión requiere un kernel más actualizado

¿Estás seguro de que eso es necesario?
Cita:

Empezado por briast
y por tanto le he instalado la versión Centos 6.2. Dado que la máquina admite el S.O. de 64 bits, he procedido a instalar la versión Centos 6.2 64bits, y a continuación le he instalado Firebird 2.5.1 64 bits.


Sólo hay una versión de firebird que sirve tanto para 32 como para 64 bits. Lo que sí existe es una versión especial para AMD 64.

Cita:

Empezado por briast
pero se sugiere poner el Forced Writes = off . Me parece un poco peligroso eso.

Eso es algo que hago siempre en linux, teniendo la precaución de tener un SAI, por si acaso.

Cita:

Empezado por briast
Normalmente uso la versión Superserver porque no tengo muchas conexiones simultáneas.

Yo siempre uso la classic y con la v2.5 sería recomendable la nueva classicserver

Cita:

Empezado por briast
Suelo subit el DefaultDBCache a 20480 (unos 80 megas), aunque he probado en el servidor a ponerlo incluso a 40000 y parece que el rendimiento es pero aún. Al final lo he dejado en 2048 que trae por defecto y parece que va un poco mejor, pero no lo esperado.

Siempre dejo todos los parámetros por defecto.

Por si te sirve de algo, configura el directorio temp en un disco diferente de la BD, y con espacio más que de sobra.

Pienso que el problema puede venir precisamente de usar la versión superserver con una cpu que tendrá más de un micro. Ya nos contarás.

briast 09-03-2012 07:29:02

Hola. Gracias por las respuestas. Voy a probar la superclassic como decís y os cuento como va.
Respecto a lo que comenta Casimiro:
- migrar de la 1.5.6 a la 2.5.1 es muy conveniente. Hasta ahora en todas las instalaciones que he realizado sin cambiar el servidor ha aumentado el rendimiento de la bd. Además, utilizo ya en la aplicación parte de las novedades en el Sql que tiene dicha versión por lo que era obligatorio el cambio.
- me extrañó mucho los requisitos de kernel de Linux para la 2.5.1. Aunque la centos 5.5 es antigua, tampoco lo es tanto, pero el kernel mínimo exigía la 6.
- he instalado la máquina con el s.o. de 64 bits, por lo que lo lógico es ponerle el firebird 64 bits. Nunca mezclo, y desde que hay versiones para 64 bits pongo la que corresponde según la máquina.
- Aún teniendo un SAI, no me gusta la idea de poner el force write a off. Me siento màs seguro puesto a ON y la verdad es que nunca he tenido ninguna incidencia con ello.
- el micro es un xeon de 4 núcleos y en Linux la superserver en la 2.5.1 creo que si los aprovecha tal como indica aquí firebirdsql.org/manual/qsg25-classic-or-super.html en el apartado de multiprocesamiento.

Un saludo

briast 09-03-2012 11:05:38

Pues después de instalar el CS 64 bits, el resultado es el mismo. Sigue igual de mal.
Voy ha hacer una prueba más poniendo la SS pero de 32 bits (aunque el S.O. esté en 64). Ya por descartar una cosa que no me había dado cuenta y es que la versión 64 pone AMD64. Supongo que esto será porque fueron los primeros procesadores de 64 bits, y no porque no sea compatible con micros Intel.

Mucho me temo que el problema va a ser efectivamente el ext4.

birmain 09-03-2012 13:28:13

Rendimiento de Firebird 2.5.1 en Linux
 
Un saludo a todos.

Hace un par de meses hice una importante migración desde Firebird 1.5.6 32 bits arquitectura Super Server en un sistema Windows 2003 32 bits de dos procesadores, cuatro núcleos y 2GB de RAM a Linux (Ubuntu 11.10 kernel 3.0.15 server 64 bits sistema de archivos ext4) y Firebird 2.5.1 64 bits en arquitectura Classic Server. Tamaño de página 8192, número de páginas 8192, lo que hace un total 65536 KB por conexión. Parece mucho para lo que aconsejan por defecto, pero hice pruebas y esta era la configuración de mas rendimiento. Teniendo en cuenta la memoria del sistema, el número de conexiones (No mas de 50) y que está completamente dedicado a la base de datos para mi es lo más adecuado.El ordenador tiene cuatro procesadores y 8 núcleos con 8 GB de RAM,

Antes de decidirme, en el período de estudio hice numerosas consultas en internet, en todos los idiomas (¡ bendito traductor !) y encontré opiniones y resultados de todo tipo, pero me di cuenta de una cosa: El gran número de factores que determinan un adecuado rendimiento. En los debates me encontré que un cuello de botella, puede producirlo infinidad de factores, desde la tarjeta de red, el disco duro, los archivos temporales, el sistema de archivos, la configuración de la memoria caché y algo muy importante: el diseño de la base de datos.

Basándome en estas experiencias, y confiando bastante en mi diseño basado principalmente en el trabajo del lado del servidor (Más de 500 stores procedures trabajando duro tanto para generar informes como procesos) me decidí a a la migración. El resultado espectacular: procesos que tardaban 3 minutos ahora tardan 25 segundos, todos y cada uno de los procesos ha mejorado de rendimiento, y el backup restore se ha visto mejorado unas 10 o 15 veces en su velocidad. Una base de datos de 1.5 GB un backup tarda menos de dos minutos si se realiza localmente y unos 10 si se hace a través de la red. Desde delphi los componentes de acceso a los datos que utilizo es la VCL de acceso a Firebird/Interbase IBDAC de Devart, Utilizo Crystal Report para los informes pero todos se preparan con procedimientos almacenados, y el motor de Crystal Report se conecta a través de ODBC con el driver de Phoenix.

El servidor no es nada del otro mundo: HP Proliant, pero he tenido suerte, no me he encontrado un cuello de botella y todo a ido a mucho mejor. Sobre todo estoy satisfecho por el ahorro en la compra de un server Windows 2008

Un saludo

Casimiro Notevi 09-03-2012 17:12:28

Cita:

Empezado por briast (Mensaje 427211)
Ya por descartar una cosa que no me había dado cuenta y es que la versión 64 pone AMD64. Supongo que esto será porque fueron los primeros procesadores de 64 bits, y no porque no sea compatible con micros Intel.

Bueno, eso ya te lo dije antes ;)
Cita:

Empezado por Casimiro notevi
Sólo hay una versión de firebird que sirve tanto para 32 como para 64 bits. Lo que sí existe es una versión especial para AMD 64.


birmain 09-03-2012 17:57:45

Versión de 64 bits de Firebird
 
La versión genérica para procesadores de 64 bits se denomina AMD64, y está soportada por cualquier procesador de 64 bits que esté soportando el sistema operativo, sea Intel o AMD o cualquiera que sea.

Cuando desde isql-fb en Linux, se ejecuta el comando; show ver;, muestra la versión del servidor instalado, y en mi caso que tengo un procesador Intel aparece esto:

Código SQL [-]
ISQL Version: LI-V2.5.1.26351 Firebird 2.5
Server version:
Firebird/linux AMD64 (access method), version "LI-V2.5.1.26351 Firebird 2.5"
Firebird/linux AMD64 (remote server), version "LI-V2.5.1.26351 Firebird 2.5/tcp (servidor-fgh)/P12"
Firebird/linux AMD64 (remote interface), version "LI-V2.5.1.26351 Firebird 2.5/tcp (servidor-fgh)/P12"
on disk structure version 11.2

Casimiro Notevi 09-03-2012 18:57:06

Que yo sepa, y por lógica, la versión AMD64 está pensada para sacar partido a una serie de características de los procesadores AMD.
Ahora bien, que funciona también si lo usas con un Intel, por supuesto, son compatibles, tan sólo que no sacará provecho de esas ventajas específicas para AMD.
Por lo demás, tienes razón.

mankeke 10-03-2012 16:47:08

Disculpa, como mides el rendimiento del motor? por el funcionamiento de tu aplicación? porque yo estoy migrando un sistema que funciona perfectamente en 1.5 pero al intentar usarla con 2.5, se pone muy lenta, lo que hice fue empezar a depurar la aplicación y mi problema por ejemplo es el componente de conexión de mi aplicación que no funciona correctamente con algunas consultas en versión 2.5 de firebird y pone muyyyy lento el sistema. pero modificando las consultas que ya se tienen problemas, va quedando muy bien, anda muy rápido. y la mejora es bastante notoria.

briast 10-03-2012 18:42:27

Hola. Pues después de realizar más pruebas he llegado a la conclusión de que es algo que pasa con el ext4 porque he probado incluso el firebird SS de 32 bits y aunque funciona ofrece el mismo rendimiento.
Respecto a lo que comenta el compañero anterior, la aplicación está mirada ya a 2.5, consultas revisadas y funciona perfectamente rápida en máquinas Windows con firebird 2.5. De hecho, funciona bastante más rápida simplemente con el cambio de servidor a 2.5.
Tengo más servidores con linux pero aún no los he actualizado por lo que trabajan con la 1.5 y la versión anterior de mi aplicación, con un buen rendimiento.
El rendimiento lo mido efectuando diferentes procesos de mi aplicación y con una batería de consultas que tengo preparada y midiendo los tiempos de respuesta.
Esta semana reinstalaré el servidor con la misma versión pero poniendo el sistema de fichero en ext3 a ver como va, y si no va reinstalaré la máquina con centos 6 pero de 32 bits.

briast 15-03-2012 18:20:01

Buenas de nuevo.
Pruebas y conclusiones.
He reinstalado la máquina con las configuraciones siguientes:
- Centos 6.2, 32 bits con ext4 y firebird 2.5. Rendimiento mal.
- Centos 6.2, 32 bits con ext3 y firebird 2.5. Rendimiento mal (luego descarto problema por el ext4).
- Centos 6.2, 32 bits con ext3 y firebird 1.5. Rendimiento bueno de nuevo.

Luego, después de probar con el firebird 2.5 versiones SS y CS y con Firebird 1.5 SS, la conclusión que llego es que el 1.5 es mucho más rápido que el 2.5 en esta máquina.
Y esto es algo incompresible pues hasta ahora todas las máquinas windows que he pasado de 1.5 a 2.5 se ha notado la mejora de rendimento, pero en esta primera máquina linux que paso de 1.5 a 2.5 resulta que va peor ???? Increible. Pero las pruebas están ahí.
Si pongo firebird 1.5, con bd 1.5, va rápido.
Si pongo firebird 2.5 con bd 1.5, va lento. Si cambio la bd a 2.5, va igual de lento. Luego no parece que afecte la estructura de la bd. Estoy yo solo conectado y voy haciendo los correspondientes gbak sin problema.

No lo entiendo ...

edito: parece que no soy el único. Al parecer firebird 2.5 en linux va mucho más lento. Mirad este enlace (añadir el http y www delante que a mi no me deja aún)

slideshare.net/ibsurgeon/firebird-25-benchmark-by-tsutomu-hayashi-tomneko

birmain 15-03-2012 18:36:52

Versión del kernel y de glib
 
No se si habrás observado esta nota en las descargas de todas las construcciones de firebird 2.5 para Linux:

"MPORTANT: Note affecting all Linux builds
The recommended Linux kernel version is 2.6.34 and glibc should be version 2.12 or higher. Minimum - kernel 2.6.27 and glibc 2.7. If your glibc version is lower than v.2.7, it must be upgraded before using Firebird 2.5 Classic/Superсlassic."

Hace referencia a una determinada versión del kernel y de las librerías glib. No se cual será tu caso en Centos pero examina sobre todo si no tienes una versión de glib desactualizada, en cuanto al kernel a mi me va perfectamente en el 3.0.15 versión de 64 bits, con el servidor firebird AMD64. Esa nota afecta a todas las construcciones tanto para Linux x86 como Linux AMD64

briast 15-03-2012 19:10:40

Precisamente por esos requisitos instalé el Centos 6.2, porque cumple con las especificaciones de kernel y glibc.
Por lo que he estado encontrando por internet, la versión 2.5, va mal en linux, pero que muy mal. Y lo confirmo porque simplemente desinstalo el firebird 2.5 y pongo el 1.5 y va de nuevo rápido.
Pero claro, quiero utilizar las mejoras que trae el 2.5.
Sin embargo, con servidor en Windows si he notado la mejora de rendimiento. En procesos largos de conversión con la 2.5 ha tardado cerca de un 40% menos de tiempo que el mismo proceso pero con el 1.5.
Seguiré buscando por internet, pero no veo como solucionarlo en linux.

RONPABLO 15-03-2012 22:12:29

Una pregunta, cuando se va a conectar al servidor linux en el cliente necesita usar la GDS32 o equivalente? y sí es así, cambia de GDS32 cada vez q cambia de servidor (cuando paso de 2.5 a 1.5) el cliente por medio de que se conectaba?. La pregunta va porque la GDS32 para Firebird 1.5 no funciona muy bien que digamos con un servidor 2.5

Casimiro Notevi 15-03-2012 23:37:45

Cita:

Empezado por briast (Mensaje 427751)
No lo entiendo ...
edito: parece que no soy el único. Al parecer firebird 2.5 en linux va mucho más lento. Mirad este enlace (añadir el http y www delante que a mi no me deja aún)
slideshare.net/ibsurgeon/firebird-25-benchmark-by-tsutomu-hayashi-tomneko

Pues no sé qué has visto en esa comparativa, pero finalmente dice:


Cita:

Firebird 2.5 is very fast than other RDBMS
Normaly running many clients over 500

Está comparándolo con mysql y postgresql.

briast 16-03-2012 11:04:21

La diapositiva número 19 pone "on Linux, Firebird is very slow!!!"
Y es verdad a medias, pues la 1.5 va muy bien pero la 2.5 va fatal. Sólo tienes que ver los benchmarks que hay en las diapositivas anteriores, las cuales puedo confirmar por las pruebas que he realizado (que han sido unas cuantas).

Respecto a las diapositivas 20, 21 y 22. Pues también lo he probado. He instalado de nuevo la Centos 6.2 64 bits y he puesto la partición /home con el sistema de archivos XFS (la partición / no admite aún XFS para el arranque en linux por lo que la he dejado en ext4). Las bases de datos se ubicarán en la carpeta /home/firebird así que irán sobre XFS.

Instalo firebird 2.5 CS 64 bits y .... peor todavía, más lento aún que las pruebas anteriores.
Quito el firebird 2.5 CS 64 bits y pongo el firebird 2.5 SS 32 bits. Ligeramente mejor, pero igual de mal comparativamente con la 1.5.

Pues por las pruebas que he realizado, sigue siendo lento. Muy lento.

Ahora bien ... pongo las bases de datos con el force writes OFF ( gfix -w async ) y ahora va muy rápido con el FB 2.5 CS 64 bits.

Conclusión. Con el force writes a off, va muy rápido, y seguramente eso corrobora las últimas diapositivas de los benchmarks que indicas. Con el force writes a on, va fatal la 2.5 (pero la 1.5 va estupendamente).

Yo no voy a poner una instalación de un cliente con el force writes off. Me parece muy peligroso aún teniendo un SAI, ya que no sé cuando se van a grabar los cambios. En teoría cuando el sistema tengo tiempo, pero eso que significa ¿1 segundo después o 1 hora?

En windows, el force write debe ir siempre en ON y la 2.5 va mucho mejor que la 1.5. ¿que ha pasado en linux?

Casimiro Notevi 16-03-2012 11:30:48

Pues mi experiencia es distinta. En windows no tengo ni idea porque nunca montamos servidores windows. Siempre montamos linux, en los últimos años han sido suse y ubuntu. Siempre la versión classicserver de firebird, y con cada cambio a nueva versión se notaba un mejor rendimiento. La versión 2.5 se está empezando a instalar a unos clientes, para ir probando, y de momento ha resultado en una mejora.
Esa es mi experiencia y eso es lo que puedo comentar.

briast 16-03-2012 13:13:15

¿ Y podrías decirme si pones el force writes a ON ?
¿ Que configuración aplicas en el firebird.conf ?
¿ que sistema de archivos ?

Casimiro Notevi 16-03-2012 13:35:40

¿ Y podrías decirme si pones el force writes a ON ?
Aunque soy partidiario de tenerlo en OFF (adoptando las medidas previsoras esenciales), normalmente está en ON, por defecto.

¿ Que configuración aplicas en el firebird.conf ?
Nunca lo modifico, salvo para indicarle la localización del "temp" y datos del estilo.

¿ que sistema de archivos ?
ext3 y ext4


Por si sirve de algo: siempre el 'pagesize' de 8192

¿Y qué tipo de pruebas haces?, ¿lectura, escritura?, ¿pocas y grandes?, ¿muchas y pequeñas?, ¿"tirando" de servidor?, ¿haciendo trabajar al cliente?, etc.
Es que son muchos factores a tener en cuenta.


La franja horaria es GMT +2. Ahora son las 10:07:30.

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