Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Monitoreo y Tunning   Ing. Lennin Caro Pérez
Pasos para entonar...                        Probar   Documentar                                 Entonar
Hardware... el primer punto   Componentes básicos     Procesador     Memoria RAM     Disco – E/S     Red   Cada equipo es ...
Procesador   Hoy en día las aplicaciones están relacionadas con los procesadores    Cualquier actividad genera E/S hasta l...
Tips del Procesador   Procesador    Los multiprocesadores simétricos no son perfectos     En ocasiones es mejor tener mas ...
Memoria RAM  Usar la memoria necesaria es un caso de ensayoy error   Mientras estes cerca (1% de diferencia) de la cantida...
E/S el cuello de botella  Cual es el límite de E/S de tu base de datos    Alto volumen de escrituras      Escritura del lo...
El camino del hardware
La Red  Posibles cuellos de botella   Tiempo de respuesta   Ancho de banda   Switches mal configurados u obsoletos  Conexi...
Prueba tu HW  Herramientas para comprobar tu HW   Procesador: PassMark, sysbench, Spec CPU   Memroia RAM: memtest, cachebe...
Mitos...   Todos los discos son iguales    Asi sean de la misma marca y hasta el mismo modelo   Todos las tarjetas de RAID...
Y el Sistema Operativo.....     Sistemas operativos recomendados        Free BSD        GNU/Linux (Debian)        Red Hat ...
Separa el log de transacciones Directorio de pg_xlog Tener un arreglo de disco puede mejorar el rendimiento entreun 10% y ...
Entonación en GNU/Linux  Sistema de Archivos   XFS para base de datos grandes   Raiser para base de datos pequeñas   Etx2 ...
Sistema Operativo Modifica los valores de tu kernel en el sistema operativo    Shmmax y shmall Verifica la versión del ker...
Monitoreo  Monitorea pro-activamente   Conoce el rendimiento de tu equipo antes de que sea crítico   Planifica tus alertas...
Entonación de PostgreSQL  shared_buffers   Usa una pequeña parte de la memoria   Cuanto se usa de la memoria      Entre el...
Entonación de PostgreSQL  maintenance_work_mem   Usada para los bulks de carga de datos, vacuum, entre otros     Entre 256...
Transacciones  effective_io_concurrency   Solo si el sistema operativo soporta E/S asincronas      Número de discos/canale...
Consultas  effective_cache_size    Estimado de la memoria disponible para guardar en  shared_buffers y cache del sistema d...
Mantenimientos  Autovacuum   Activalo para aplicaciones con base de datos OLTP   No es recomendable para base de datos OLA...
Mantenimientos  Verificar los disparadores de Autovacuum    Para verificar cuando se ejcutara el autovacuum y cuando se  e...
Mantenimientos  Vacuum    Puedes ejecutar Vacuum manualmente sobre tablas que  tengan un gran número de inserciones o actu...
Recomendaciones  Diseño de los esquemas    No optimice prematuramente    Analiza cuales tablas tendrán mayor volumen de in...
Recomendaciones  No indexes todo    Los indices significan mayor carga al realizar las inserciones,  el borrado y las actu...
Recomendaciones  Particiones   Particiona las tablas que son muy grandes     Ubica el campo candidato para realizar la par...
Recomendaciones  Explain Analize   Verifica como se resuelven tus consultas   Verifica si existe un conteo de registros eq...
Optimización de consultas            Revisa pg_stat_statement Aplica las                         Ejecuta Explain          ...
Optimización de procedimientos               Revisa pg_stat_function                                    Ubica los Aplica l...
Los catálogos  Nombre del Catalogo                                    Propositopg_aggregate            funciones de agrega...
Nombre del Catalogo                                      Propositopg_foreign_table          información adicional tabla ex...
PreguntasContacto:lennin.caro@yahoo.com@lennincaro+58 412-5826767  Enlaces   http://www.postgresql.org/docs/   PostgreSQL ...
Muchas gracias...
Monitoreo tunning postgresql_2011
Upcoming SlideShare
Loading in …5
×

Monitoreo tunning postgresql_2011

748 views

Published on

Monitoreo y entonacion de PostgreSql

Published in: Technology
  • Be the first to comment

Monitoreo tunning postgresql_2011

  1. 1. Monitoreo y Tunning Ing. Lennin Caro Pérez
  2. 2. Pasos para entonar... Probar Documentar Entonar
  3. 3. Hardware... 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
  4. 4. Procesador Hoy en día las aplicaciones están relacionadas con los procesadores Cualquier actividad genera E/S hasta la escritura en disco Cuantos nucleos necesito para ejecutar consultas PostgreSQL es multi-procesador Cada núcleo solo puede procesar una consulta a la vez Lo mejor es realizar maximo dos consultas por nucleo Si puedes aumentar la cantidad de procesadores ... Hazlo No tienes que pagar licencias por procesadores adicionales
  5. 5. Tips 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
  6. 6. Memoria RAM Usar la memoria necesaria es un caso de ensayoy error 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 Limites mas críticos 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
  7. 7. E/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
  8. 8. El camino del hardware
  9. 9. La 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
  10. 10. Prueba 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
  11. 11. 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
  12. 12. Y el Sistema Operativo..... Sistemas operativos recomendados Free BSD GNU/Linux (Debian) Red Hat Solaris Unix Metodos de sync para los sistemas operativos Platform open_datasync fdatasync fsync_writethrough fsync open_syncLinux 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?)
  13. 13. Separa el log de transacciones Directorio de pg_xlog Tener un arreglo de disco puede mejorar el rendimiento entreun 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.
  14. 14. Entonación en GNU/Linux Sistema de Archivos XFS para base de datos grandes Raiser para base de datos pequeñas Etx2 No es seguro cuando sucede una caida Etx3 Mas lenta que ext2 pero mas segura ya que tiene Journalling Etx4 Presenta un bug con el fsync NFS o cualquier sistema de archivos remoto 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
  15. 15. Sistema Operativo Modifica los valores de tu kernel en el sistema operativo Shmmax y shmall Verifica la versión del kernel para mejorar el rendimiento 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 oarreglos 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
  16. 16. Monitoreo Monitorea pro-activamente Conoce el rendimiento de tu equipo antes de que sea crítico Planifica tus alertas 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
  17. 17. Entonació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
  18. 18. Entonación de PostgreSQL maintenance_work_mem Usada para los bulks de carga de datos, vacuum, entre otros Entre 256 MB y 1 GB Usada para la creación de indices Permite que el vacuum sea más rapido Pero cuidado si se estan ejecutando multiples vacuum wal_buffers Es la memoria usada por el WAL (Write Ahead Log) 8 MB para los SMP
  19. 19. Transacciones effective_io_concurrency Solo si el sistema operativo soporta E/S asincronas Número de discos/canales 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 checkpoint_segment Cuantos segmentos de log de 8MB se crean antes del proximo checkpoint Usa 16, 64, 128 (es cuestion de probar)
  20. 20. Consultas 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 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
  21. 21. Mantenimientos 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 Para monitorear los autovacuum SELECt schemaname, relname, last_autovacuum, last_autoanalyze FROM pg_stat_all_tables;
  22. 22. Mantenimientos 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;
  23. 23. Mantenimientos 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
  24. 24. Recomendaciones 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 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
  25. 25. Recomendaciones 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 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
  26. 26. Recomendaciones Particiones Particiona las tablas que son muy grandes 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 Consultas Prueba usar NOT IN o NOT EXISTS para consultas lentas Optimiza para consultas en cache 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
  27. 27. Recomendaciones 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
  28. 28. Optimización de consultas Revisa pg_stat_statement Aplica las Ejecuta Explain Analize en las correciones consultas lentas Modifica las consultas lentas o loas parametros
  29. 29. Optimización de procedimientos Revisa pg_stat_function Ubica los Aplica las procedimientos correciones mas lentos Localiza las operaciones lentas
  30. 30. Los catálogos Nombre del Catalogo Propositopg_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") restricciones de comprobación, restricciones únicas, restricciones depg_constraint clave principal, las claves foráneaspg_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
  31. 31. 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
  32. 32. PreguntasContacto:lennin.caro@yahoo.com@lennincaro+58 412-5826767 Enlaces http://www.postgresql.org/docs/ PostgreSQL en español http://archives.postgresql.org/pgsql-es-ayuda/ PostgreSQL Performance http://archives.postgresql.org/pgsql-performance/ Esta charla es Copyleft 2011 Lennin Caro Pérez, y esta bajo los atributos de la licencia creative commons
  33. 33. Muchas gracias...

×