Re: raid 10 vs bases separadas en dos discos

From: Lazaro Ruben Garcia Martinez <lgarciam(at)uci(dot)cu>
To: Felipe Hernández <pipelx(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: raid 10 vs bases separadas en dos discos
Date: 2013-06-26 20:53:40
Message-ID: 8b8af305-51e3-4375-86d0-d3f2477e1382@ucimail3.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ese número máximo de conexiones concurrentes es muy elevado, cuando el server de base de datos va a utilizar (al menos así he leido en varios sitios) un número mayor a 200 conexiones concurrentes, lo más recomendable es utilizar un pool de conexiones (pgpool, bucardo).

Lo otro que debes ver es como optimizar tu servidor y analizar parámetros como shared_buffers, work_mem, maintenance_work_mem, wal_buffers, entre otros que son fundamentales para el rendimiento. También puedes analizar la configuración de fsyn y synchronous_commit, pues de esta forma las escrituras se realizan a disco instantáneamente por cada commit, algo que no necesariamente podría ser así su utilizas commit asíncrono o synchronous_commit = off.

Otro tema impresindible para obtener un buen rendimiento es darle mantenimiento constante a la db mediante la configuración de vacuum ya sea automáticamente o con script ejecutados desde cron.

Desde el sistema operativo podrías ver que sistema de ficheros sería más factible utilizar, se que ext4 es recomendado, arquitectura 64bit recomendada y ver parámetros como el noatime para disminuir las operaciones de escrituras en el disco cada ves que un fichero es modificado.

Puedes consultar el portal de postgresql en español. Ahí encontrarás muy buenos artículos al respecto, además en el primer número de la revista de postgresql http://pgmag.org/download hay artículos muy buenos sobre todo esto que te he comentado.

Sobre los discos, si los vás a separar una opción creo que podría ser crear un raid 10 para la db con 2 discos, y otro raid 10 con los dos restantes para el directorio pg_xlog, con el objetivo de distribuir la carga de escritura en varios discos de manera separada, de forma tal que con raid 10 mantienes la información a salvo y tienes un buen rendimiento en el sistema.

Esas son mis consideraciones.
Saludos a todos.

----- Mensaje original -----

> Buen dia,

> Tengo dos bases de datos, una de 60gb y otra de 40gb, el
> desarrollador del aplicativo las comunica por medio de dblink para
> hacer cruces e inserciones tanto en la una como en la otra.

> En el momento tengo un raid 10 con 4 discos sas de 300gb, pero tengo
> problemas de rendimiento, mirando por top tengo los 8 nucleos del
> servidor relativamente en ocio rara vez sube uno de los procesos a
> mas del 20% en un solo nucleo, y memoria disponible; casi nunca hay
> consumo de swap y lo maximo que se llega a consumir no pasa de los
> 500mb. sin embargo los discos duros estan todo el el tiempo al 100%
> a tal punto que llega a poner lento hasta el sistema operativo.

> El motor de base de datos es un postgresql 8.3, la verdad no se como
> estuvo operando tanto tiempo sin haberle tocado ni un solo parametro
> para tunearlo, todo el archivo de configuracion estaba por defecto a
> excepcion de el numero de conexiones de usuarios que esta en 1000 y
> el parametro shmmax del kernel que estaba casi a la totalidad de la
> memoria ram del servidor.

> El problema fue que al aumentar los parametros del postgres el
> rendimiento bajo a tal punto de congelar el servidor y lo peor es
> que al volver los parametros como estaban inicialmente el sistema
> sigue inoperante, es decir las cosas no volvieron a estar como
> estaban antes.

> Se saco copias de las bases de datos, y se restauraron, con eso se
> conseguia inicialmente que el sistema volviera a funcionar por un
> par de meses pero ahora esa solucion ya no funcional.

> El servidor cuenta en el momento con 12 gb de ram, que a mi parecer
> es insuficiente pero hasta antes de modificar los archivos permitian
> trabajar.

> Mi pregunta es si por la experiencia de ustedes podria mejorar el
> rendimiento desarmando los raid y montando las bases en discos
> diferentes o por ahi no es la solucion.

> La otra opcion que tengo es montar una de las dos base de datos en un
> servidor con identicas caracteristicas y que la comunicacion siga
> por dblink apuntando a las respectivas direcciones de cada servidor.

> La solucion que necesito dar debe ser netamente por hardware, sistema
> operativo o tuning de postgres ya que es imposible la optimizacion
> de queries o modificacion de indices debido a que no tengo acceso al
> aplicativo ya que como lo dije inicialmente este es de un tercero.

> Cordialmente,

> LUIS FELIPE HERNANDEZ.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Romo 2013-06-26 20:54:15 Re: raid 10 vs bases separadas en dos discos
Previous Message Felipe Hernández 2013-06-26 20:16:57 raid 10 vs bases separadas en dos discos