monitoreo tunning postgresql_2011

34
Monitoreo y Tunning Monitoreo y Tunning Ing. Lennin Caro Pérez Ing. Lennin Caro Pérez

Upload: lennin-caro

Post on 09-Jul-2015

381 views

Category:

Technology


0 download

DESCRIPTION

Monitoreo y entonacion de PostgreSql

TRANSCRIPT

Page 1: Monitoreo tunning postgresql_2011

Monitoreo y TunningMonitoreo y TunningIng. Lennin Caro PérezIng. Lennin Caro Pérez

Page 2: Monitoreo tunning postgresql_2011
Page 3: Monitoreo tunning postgresql_2011

Pasos para entonar...Pasos para entonar...

Probar

DocumentarEntonar

Page 4: Monitoreo tunning postgresql_2011

Hardware... el primer puntoHardware... el primer punto

Componentes básicos Procesador Memoria RAM Disco – E/S Red

Cada equipo es diferente Auque esten configurados igual, son diferentes Para cada de base de datos existe un equipo

OLTP OLAP Web

Page 5: Monitoreo tunning postgresql_2011

Hoy en día las aplicaciones están relacionadas con los procesadores

Cuantos nucleos necesito para ejecutar consultas

Si puedes aumentar la cantidad de procesadores ... Hazlo

ProcesadorProcesador

Cualquier actividad genera E/S hasta la escritura en disco

PostgreSQL es multi-procesador

Cada núcleo solo puede procesar una consulta a la vez

Lo mejor es realizar maximo dos consultas por nucleo

No tienes que pagar licencias por procesadores adicionales

Page 6: Monitoreo tunning postgresql_2011

Tips del ProcesadorTips del Procesador

Procesador Los multiprocesadores simétricos no son perfectos

En ocasiones es mejor tener mas procesadores con menos núcleos

Características de los procesadores

Velocidad Los que tienen mas memoria L2 son mejores Los de 64 bit pueden mejorar considerablemente el

rendimiento

Especialmente cuando se use mas de 4 Gb de RAM Pero no siempre es la solución al bajo rendimiento

Page 7: Monitoreo tunning postgresql_2011

Memoria RAMMemoria RAM Usar la memoria necesaria es un caso de ensayo

y error

Limites mas críticos

Mientras estes cerca (1% de diferencia) de la cantidad de memoria que necesitas tu servidor sera rapido. Estar mas alla del 2% de lo necesario bajaria el rendimiento

Tienes la RAM suficiente para mantener en share_buffers la base de datos

Aproximadamente 6 veces el tamaño de la base de datos Tienes la RAM suficiente para mantener la base de datos en

el cache

Aproximadamente de 2 a 3 veces el tamaño en disco de la base de datos

Page 8: Monitoreo tunning postgresql_2011

E/S el cuello de botellaE/S el cuello de botella Cual es el límite de E/S de tu base de datos

Alto volumen de escrituras

Escritura del log por cada transacción Base de datos mas grandes que la RAM (aprox. 3 veces)

Cada consulta sera afectada por el límite de E/S

Optimiza la E/S Si la base de datos es muy grande, invierte en discos Calcula cuánto tarda en escribir en disco un bloque de datos Calcula cuánto tarda en leer toda la base de datos desde el

disco Revisa cuantos log de transacciones se generan

Page 9: Monitoreo tunning postgresql_2011

El camino del hardware El camino del hardware

Page 10: Monitoreo tunning postgresql_2011

La RedLa Red Posibles cuellos de botella

Tiempo de respuesta Ancho de banda Switches mal configurados u obsoletos

Conexiones dedicadas Entre el aplicativo y el servidor de BD Entre el servidor de BD y el de replica o de recuperación de

desastres Varias interfaces de conexion

Transferencias de archivos Conexiones Gigabits o Megabits Calcular la capacidad de transferencia para la copia de la

data, los dumps, los logs y los WAL

Page 11: Monitoreo tunning postgresql_2011

Prueba tu HWPrueba tu HW Herramientas para comprobar tu HW

Procesador: PassMark, sysbench, Spec CPU Memroia RAM: memtest, cachebench, Stream E/S: bonnie++, dd, iozone Red: bwping, netperf Base de datos: pgBench, sysbench

Prueba el HW antes de montar tu BD Prueba y compara antes de comprar Involucra a tus administradores de sistemas en la toma de

decisión No creas en todo lo que te venden Prueba nuevamente Y por ultimo prueba de nuevo y compara

Page 12: Monitoreo tunning postgresql_2011

Mitos...Mitos... Todos los discos son iguales

Asi sean de la misma marca y hasta el mismo modelo

Todos las tarjetas de RAID son iguales Todos los sistemas operativos son iguales

Asi sean la misma versión y tipo

Una pieza mal configurada o en mal estado no puede inutilizar tu sistema

Las estadísticas te van a decir todo Los vendedores siempre dicen la verdad No existe un lugar donde te puedan ayudar con tu

manejador de base de datos PostgreSQL No busques la combinación correcta, comprala

Page 13: Monitoreo tunning postgresql_2011

Y el Sistema Operativo.....Y el Sistema Operativo.....

Sistemas operativos recomendados Free BSD GNU/Linux (Debian) Red Hat Solaris Unix

Metodos de sync para los sistemas operativosPlatform open_datasync fdatasync fsync_writethrough fsync open_sync

Linux No Sí No Sí DirectoMac OS X/Darwin No No Sí Sí Sí (Directo?)Solaris Sí Sí No Sí YesBSD/OS No No No Sí Sí (Directo?)FreeBSD No No No Sí Sí (Directo?)

Page 14: Monitoreo tunning postgresql_2011

Separa el log de transacciones Directorio de pg_xlog Tener un arreglo de disco puede mejorar el rendimiento entre

un 10% y 50%

Tablespaces en discos distintos Para tablespace que contengan tablas muy grandes Para tablespace que contengan tablas particionadas Para tablespace que tengan indices grandes Para tablespace que tengan indices paticionados

Tablespace diferente para las tablas que tengán más transacciones que otras.

Tablespace diferente para las tablas que sean más grandes que otras.

Page 15: Monitoreo tunning postgresql_2011

Sistema de Archivos XFS para base de datos grandes

Entonación en GNU/LinuxEntonación en GNU/Linux

Etx2

Etx3

NFS o cualquier sistema de archivos remoto

No es seguro cuando sucede una caida

Mas lenta que ext2 pero mas segura ya que tiene Journalling

Raiser para base de datos pequeñas

No tiene el mismo archivo manejo semántico del sistema de archivos local, y pueden causar problemas de fiabilidad de los datos o la recuperación de fallas

Etx4 Presenta un bug con el fsync

Page 16: Monitoreo tunning postgresql_2011

Sistema Operativo Modifica los valores de tu kernel en el sistema operativo

Verifica la versión del kernel para mejorar el rendimiento

Shmmax y shmall

Versión superior a 2.6

Verifica las opciones de los puntos de montura data = writeback, noatime, nodiratime

Ubica los puntos de monturas PM en diferentes discos o arreglos

Crea la base de datos en un PM diferente Crea enlaces simbolicos para colocar las tablas en PM diferentes Crea enlaces simbolicos para ubicar los índices Mueve las tablas que realicen mucho en JOIN a PM diferentes Coloca los WAL en un PM diferente

Page 17: Monitoreo tunning postgresql_2011

Monitorea pro-activamente Conoce el rendimiento de tu equipo antes de que sea crítico Planifica tus alertas

MonitoreoMonitoreo

Más alla del 80% es problemático

Monitorea todo Uso de los procesadores (y sus cores) Discos que mas escriben Discos que mas se leen Uso de la memoria Horas picos o de alto impacto para el servidor

Usa las herramientas que quieras nagios, cacti, reconnitor, Hyperic, OpenNMS

Page 18: Monitoreo tunning postgresql_2011

Entonación de PostgreSQLEntonación de PostgreSQL

shared_buffers Usa una pequeña parte de la memoria Cuanto se usa de la memoria

Entre el 15% y el 25% en servidores dedicados Calcular acierto del buffer en PostgreSQL 9 “EXPLAIN (ANALYZE

ON, BUFFERS ON) SELECT ...“ Calcular acierto del buffer en versiones anteriores “select

datname, blks_read, blks_hit from pg_stat_database;”

work_mem Para consultas de ordenamiento, tipo hash entre otras

Entre 32 MB y 64 MB

Detecta una mala configuración Muchos SWAP: el parametro esta muy alto Archivos temporales de log: parametro muy bajo

Page 19: Monitoreo tunning postgresql_2011

Entonación de PostgreSQLEntonación de PostgreSQL

maintenance_work_mem Usada para los bulks de carga de datos, vacuum, entre otros

Entre 256 MB y 1 GB

wal_buffers Es la memoria usada por el WAL (Write Ahead Log)

8 MB para los SMP

Usada para la creación de indices Permite que el vacuum sea más rapido

Pero cuidado si se estan ejecutando multiples vacuum

Page 20: Monitoreo tunning postgresql_2011

TransaccionesTransacciones effective_io_concurrency

Solo si el sistema operativo soporta E/S asincronas Número de discos/canales

checkpoint_segment Cuantos segmentos de log de 8MB se crean antes del

proximo checkpoint

Usa 16, 64, 128 (es cuestion de probar)

synchronous_commit La velocidad es más importante que la integridad

Coloca el parametro synchronous_commit = off Puedes perder data en un apagado abrupto del sistema

Page 21: Monitoreo tunning postgresql_2011

effective_cache_size Estimado de la memoria disponible para guardar en

shared_buffers y cache del sistema de archivo

2/3 del total de RAM

ConsultasConsultas

default_statistics_target Aumenta entre 200 a 1000 para base de datos grandes El valor por omisión es de 100 Actualizar las estadísticas pr columnas es mejor

log_statement Si quieres saber que consultas se ejcutan y el tiempo que

tardan.

log_statement=all Esto genera una carga adicional de escritura en el log

Page 22: Monitoreo tunning postgresql_2011

Autovacuum Activalo para aplicaciones con base de datos OLTP No es recomendable para base de datos OLAP Asegurate de incluir la opción analyze Para versiones de 8.2 y menores usar esta configuración:

stats_start_collector = on stats_block_level = on stats_row_level = on Autovacuum = on

MantenimientosMantenimientos

Para monitorear los autovacuum SELECt schemaname, relname, last_autovacuum,

last_autoanalyze FROM pg_stat_all_tables;

Page 23: Monitoreo tunning postgresql_2011

Verificar los disparadores de Autovacuum Para verificar cuando se ejcutara el autovacuum y cuando se

ejecutó existen un grupo de consultas:

SELECT max(age(datfrozenxid)) FROM pg_database;SELECT datname,age(datfrozenxid) from pg_database ORDER BY

age(datfrozenxid) DESC;SELECT relname, age(relfrozenxid) FROM pg_class WHERE

relkind = 'r' ORDE BY age(relfrozenxid) DESC;

MantenimientosMantenimientos

Page 24: Monitoreo tunning postgresql_2011

Vacuum Puedes ejecutar Vacuum manualmente sobre tablas que

tengan un gran número de inserciones o actualizaciones Si no se mantiene un Vacuum continuo el planner de

consultas puede tomar un camino equivocado Existen varios tipos de Vacuum

Full: Para obtener mas espacio pero toma mucho mas tiempo Freeze: Es más agresivo contra las tuplas ya que buscas las que

tengan datos “Freezing” Verbose: Muestra el detalle de las acciones realizadas Analyze: Actualiza las estadísticas usadas por el planner para

determinar el mejor camino

MantenimientosMantenimientos

Page 25: Monitoreo tunning postgresql_2011

Diseño de los esquemas No optimice prematuramente Analiza cuales tablas tendrán mayor volumen de inserciones,

consultas o actualizaciones Existe una gran variedad de tipos de datos, elige la que mejor

responda a la necesidad Los tipos de datos BLOB son muy lento, usalos con cuidado

RecomendacionesRecomendaciones

Indices Indexa las llaves foranes Indexa los criterios mas comunes para los WHERE Indexa los criterios agreagados (expresiones) Verifica los demás metodos de indexación (expressions, full

text, partial) y busca el más adecuado para tu necesidad

Page 26: Monitoreo tunning postgresql_2011

No indexes todo Los indices significan mayor carga al realizar las inserciones,

el borrado y las actualizaciones Demasiados indices en la misma tabla pueden ocasionar

problemas al planner Las tablas pequeñas no necesitan indices, revisa su

cardinalidad Verifica los indices actuales y cuales se estan usando

RecomendacionesRecomendaciones

Usa el catálogo pg_stat_user_indexes

Verifica las tablas que son hacen SEQUENCIAL SCAN y hacer muchas actualizaciones y borrados de datos

Usa el catálogo pg_stat_user_tables

Page 27: Monitoreo tunning postgresql_2011

Particiones Particiona las tablas que son muy grandes

RecomendacionesRecomendaciones

Consultas Prueba usar NOT IN o NOT EXISTS para consultas lentas Optimiza para consultas en cache

Ubica el campo candidato para realizar la partición Si tienes muchas consultas donde un campo tiene poca

cardinalidad (valores Sí/No) y este es usado constantemente en el WHERE particiona la tabla o usa indices particionados

Aumenta o disminuye el valor de seq_page_cost y random_page_cost en una sesion de trabajo y verifica el resultado

Deshabilita las opciones de optiomización En raras ocasiones el planner se equivoca, pero no cuesta nada

probar

Page 28: Monitoreo tunning postgresql_2011

Explain Analize Verifica como se resuelven tus consultas Verifica si existe un conteo de registros equivocado Verifica los sequencial scan que se realizan Verifica si existe un conteo alto de loops Trata de re-excribir las consulta con un mal plan de ejecución

RecomendacionesRecomendaciones

Page 29: Monitoreo tunning postgresql_2011

Optimización de consultasOptimización de consultas

Revisa pg_stat_statement

Aplica lascorreciones

Modifica lasconsultas lentas oloas parametros

Ejecuta Explain Analize en las consultas lentas

Page 30: Monitoreo tunning postgresql_2011

Optimización de procedimientosOptimización de procedimientos

Ubica los procedimientos mas lentos

Revisa pg_stat_function

Aplica lascorreciones

Localiza las operaciones lentas

Page 31: Monitoreo tunning postgresql_2011

Los catálogosLos catálogosNombre del Catalogo Proposito

pg_aggregate funciones de agregadopg_am índice de acceso a métodospg_amop los operadores del método de accesopg_amproc procedimientos de acceso método de apoyopg_attrdef valores de las columnas por defectopg_attribute columnas de la tabla (los "atributos")pg_authid identificadores de autorización (roles)pg_auth_members autorización de las relaciones de identificación de miembropg_cast moldes (conversiones de tipos de datos)pg_class tablas, índices, secuencias, vistas ("relaciones")

pg_constraint

pg_collation colaciones (información local)pg_conversion conversión de codificación de la informaciónpg_database bases de datos dentro de este cluster de base de datospg_db_role_setting por función y por base de datos configuraciónpg_default_acl privilegios por defecto para los tipos de objetospg_depend dependencias entre los objetos de base de datospg_description descripciones o comentarios sobre los objetos de base de datospg_enum enumeración de etiquetas y definiciones de valorespg_extension extensiones instaladaspg_foreign_data_wrapper extranjeros-los datos de definiciones de envolturapg_foreign_server las definiciones de servidor extranjero

restricciones de comprobación, restricciones únicas, restricciones de clave principal, las claves foráneas

Page 32: Monitoreo tunning postgresql_2011

Nombre del Catalogo Propositopg_foreign_table información adicional tabla externapg_index información adicional de índicespg_inherits tabla de jerarquía de herenciapg_language idiomas para la escritura de funcionespg_largeobject páginas de datos de objetos de gran tamañopg_largeobject_metadata metadatos para objetos de gran tamañopg_namespace esquemaspg_opclass acceder a las clases método del operadorpg_operator los operadorespg_opfamily acceso de las familias método del operadorpg_pltemplate datos de la plantilla de las lenguas de procedimientopg_proc funciones y procedimientospg_rewrite reglas de consulta escribirpg_seclabel etiquetas de seguridad en los objetos de base de datospg_shdepend las dependencias de objetos compartidospg_shdescription comentarios sobre los objetos compartidospg_statistic estadísticas de planificadorpg_tablespace espacios de tablas dentro de este grupo de base de datospg_trigger desencadenantespg_ts_config configuraciones de búsqueda de textopg_ts_config_map asignaciones de las configuraciones de búsqueda de texto 'tokenpg_ts_dict diccionarios de búsqueda de textopg_ts_parser analizadores de búsqueda de textopg_ts_template plantillas de texto de búsquedapg_type los tipos de datospg_user_mapping asignaciones de usuarios a los servidores extranjeros

Page 33: Monitoreo tunning postgresql_2011

PreguntasPreguntas

Enlaces http://www.postgresql.org/docs/

http://archives.postgresql.org/pgsql-performance/

http://archives.postgresql.org/pgsql-es-ayuda/ PostgreSQL Performance

PostgreSQL en español

Esta charla es Copyleft 2011 Lennin Caro Pérez, y esta bajo los atributos de la licencia creative commons

Contacto:

[email protected]

@lennincaro

+58 412-5826767

Page 34: Monitoreo tunning postgresql_2011

Muchas gracias...Muchas gracias...