Re: raid 10 vs bases separadas en dos discos

From: Fernando Hevia <fhevia(at)gmail(dot)com>
To: Felipe Hernández <pipelx(at)gmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: raid 10 vs bases separadas en dos discos
Date: 2013-06-26 23:00:14
Message-ID: CAGYT1XR+ebxrA4wnFkF82o-zCktiSsqWaQKiWPp1dTyevN+cvQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estimado,

Definitivamente faltan datos para poder hacer un diagnóstico pero algo se
puede arriesgar:
Mi pálpito es que tu problema debe estar en las escrituras y no en las
lecturas. Lo razonable sería empezar por la sugerencia 4 abajo pero ya que
insistes en HW asumo que algún diagnóstico ya tienes que no nos estás
compartiendo.

Si ese es el caso el primer objetivo es incrementar el throughput de
escrituras del sistema. Para eso:

1.IO Controller
a) Tienes una controladora con BBU caché? Si no tienes, compralo.
b) Asegurate que el writeback caché de la controladora de disco esté
habilitado, lógicamente asegurate de tener el Battery-Backup-Unit Caché
instalado en la controladora para garantizar consistencia en caso de un
crash.

2.Discos y RAID
a) RAID 10 es el UNICO esquema de disco a considerar para los datafiles si
lo que buscas es performance Y redundancia. Si puedes agregar más discos
compralos y trata de crear un único RAID 10 con todos los discos posibles.
Si eso es un problema, arma un RAID 1 adicional c/ 2 discos para log files
+ OS y deja el RAID 10 exclusivamente para los datafiles.

3. Distribución de la carga
a) Si escalar el IO del equipo actual no se puede... mueve una de las bases
a otro equipo. Distribuirás los IO entre ambos.

4. Profundiza el diagnóstico
a) Sabes que estás limitado en IO... ¿pero es escritura o lectura? (vmstat)
b) ¿Cuando se pone lento y con que tipo de operaciones? ¿Es constante?
(vmstat)
c) ¿Verificaste que no tengas cuellos de botella con los checkpoints? (logs
en postgresql.conf)
d) ¿No hay locks? (logs en postgresql.conf)
d) ¿El mantenimiento es el adecuado? (autovacuum & Reindex)
e) ¿Identificaste los queries más problemáticos? (logs en postrgesql.conf)
f) ¿Tienes un monitoreo constante del server y base? (nagios, zabbix,
zenoss)

Insisto, lo mejor sería empezar por el punto 4 y luego saber donde invertir
los recursos. Si después de todo resulta que era mantenimiento o que lees
indices gigantescos en forma permanente, pues priorizaría agregar memoria
para mejorar el rendimiento.

Como te dijeron: 1000 max_connections no es racional. Si tienes más de
50-100 conexiones simultáneas sería buena idea implementar un connection
pooler como pgbouncer o pgpool2.

Saludos,
Fernando.

2013/6/26 Felipe Hernández <pipelx(at)gmail(dot)com>

>
> 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 Alvaro Herrera 2013-06-26 23:10:01 Re: raid 10 vs bases separadas en dos discos
Previous Message Fernando Romo 2013-06-26 20:54:15 Re: raid 10 vs bases separadas en dos discos