PDA

Ver la Versión Completa : Rendimiento de Firebird 2.5.1 64bits en Centos 6.2 64 bits


briast
08-03-2012, 19:10:01
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
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?
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.

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.

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

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
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
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 ;)
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
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:


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
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
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:


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.

briast
16-03-2012, 13:54:58
Pues una cosa adicional que no sabía y que he buscado en firebird y efectivamente es así. El motivo por el que en FB 1.5 va rápido es que el force write a On no funciona en linux con FB 1.5 y resulta que está siempre en OFF. Vaya!!!

No soy partidario de ponerlo a OFF, pero al parecer llevo bastante tiempo con eso en OFF en los clientes que tienen servidor linux (en los de windows si va bien el ON). La verdad que no he tenido problemas y eso que más de uno no tiene SAI y se le ha ido la electricidad alguna que otra vez.

En fin, pues lo dejaré con Centos 6.2 64 bits y FB 2.5 64 bits Y FORCE WRITE OFF, porque por las pruebas que he hecho va extraordinariamente rápido. Me resignaré al force write OFF e informaré a aquellos clientes que monte un SAI (si o si) una vez más (ya se lo digo habitualmente...).

PD: El pagesize lo tengo en 8192. Es el que garantiza que el "depth" de los índices no sea superior a 3.

Gracias a todos, una vez más, por vuestra ayuda.

mightydragonlor
16-03-2012, 14:39:34
Gracias a ti por mantenernos informados sobre este tema tan interesante =)

birmain
16-03-2012, 15:36:59
Edito por completo el post, no había leido la última página. Veo que está resuelto

Delfino
03-04-2012, 13:54:41
PD: El pagesize lo tengo en 8192. Es el que garantiza que el "depth" de los índices no sea superior a 3.


Prueba el pagesize a 4096, a lo mejor el problema esta ahi :confused:

hansito78
28-04-2012, 21:09:10
hola amigo tengo una pregunta como puedo colocar FORCE WRITE OFF la base de datos para que me haga las consultas mas rápido tengo ubuntu 10.10, si me podrías decir el comando en consola para cambia de ON A OFF te lo agradecería mucho para hacer pruebas, haber si las consultas la hace mas rápido te estaria eternamente agradecido espero tu pronta respuesta saludos y gracias. :D

Casimiro Notevi
28-04-2012, 21:19:29
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración.

Recuerda crear hilos nuevos para temas que no tienen que ver con el título que se trata.

De todas formas, como eres nuevo, es normal que no lo sepas :)

Para contestar tu pregunta: usa gfix, está en el directorio de firebird/bin
Me parece recordar que el parámetro es -write on | off
Aquí (http://www.intitec.com/varios/Firebird-gfix.pdf) tienes un sencillo tutorial con todos los parámetros de gfix.

hansito78
28-04-2012, 21:52:37
muchas gracias casimiro por responder mira te explico mejor mira tengo un sistema que se llama microsip que ocupa firebird para la comunicacion mira en windows se super lento en la consulta me cambie a linux ubuntu y cambio mucho el desempeño del servidor es mas rapido para habrir el programa pero me gustaria que las consulta a la base de dato sea mas rapida, y estaba leyendo que las consultas se hacen mas rapido si se coloca wrtheforce=off per como todavia soy medio nuevo en esto de base de datos por eso te preguntaba algun comando de consola para cambiar el on a off para hacer pruebas en las consultas, me has dado el comando pero me dices que sale firebird/bin pero he buscado esa carpeta en ubuntu no me sale, me sale solo el frebird que esta en var/lib/firebird/2.5/etc. pero no me sale la carpeta bin me gustaria que me explicaras un poco mas detallado porfavor si se puede he estado leyendo sobre firebird y me interesa saber esto de antemano muchas gracias y disculpa por no colocar titulo como dice soy nuevo :P, aparte esta muy buena la pagina tiene mucha informacion gracias espero tu pronta respuesta saludos

Casimiro Notevi
28-04-2012, 23:02:16
Bueno, te explicaba antes que "temas nuevos deben ir en hilos nuevos", supongo que habrás leído nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), te la he indicado antes.
Así que mejor crea un nuevo hilo y así invitamos a todos a ayudarte.
Supongo, lo normal, es que firebird estará instalado en /opc/firebird/
Si no tienes un SAI (UPS), yo no pondría write off, lo dejaría en on