Entonamiento y perfilado de Drupal

37

Click here to load reader

description

Entonamiento y perfiladode Drupal

Transcript of Entonamiento y perfilado de Drupal

Page 1: Entonamiento y perfilado de Drupal

Entonamiento y perfiladode Drupal

Rodolfo Campos@camposer

Madrid, Octubre de 2011

Page 2: Entonamiento y perfilado de Drupal

Agenda

●Qué es Drupal●Módulos del CMS

● Boost● Memcache● Profiling

●Depuración y perfilado● Xdebug● JMeter

●Mejoras y actualizaciones, parcheo y distribuciones●Aceleradores Web

● Pagespeed● Varnish

●Bases de Datos y Optimizadores de código

Page 3: Entonamiento y perfilado de Drupal

Entonamiento y perfiladode Drupal

Qué es

Page 4: Entonamiento y perfilado de Drupal

Drupal

Drupal es un Sistema Manejador de Contenidos (CMS) que permite crear y mantener diferentes tipos de sitios web sin la

necesidad de dominar lenguajes de programación

Page 5: Entonamiento y perfilado de Drupal

Drupal

Page 6: Entonamiento y perfilado de Drupal

Entonamiento y perfiladode Drupal

Módulos

Page 7: Entonamiento y perfilado de Drupal

Boost●Es un módulo que ofrece cacheo de páginas estáticas para sitios de Drupal. Para instalaciones en servidores compartidos es la opción ideal.●Características principales:

● Mejora el rendimiento de sitios web para usuarios anónimos.● Cacheo de página sobre demanda (on-demand)● Soporte para hostings compartidos● Soporte para instalaciones multi-site● Soporte para instalaciones en subdirectorios● Soportado y diseñado para Apache● Soporte de algunas funcionalidades sobre Nginix y Lighthttpd ● Soporte para compresión de páginas con Gzip● Cacheo de HTML, XML, CSS, JavaScript, JSON/AJAX.

Page 8: Entonamiento y perfilado de Drupal

Boost (cont...)● Panel de control para realizar ajustes (finos) del módulo● Archivos htaccess incluidos.● Generador de archivos htaccess● Ajuste de tiempos de caché para diferentes partes del sitio web● Utiliza CRON para actividades de limpieza de archivos de caché● Generador de caché automático● Estadísticas y control de liberación (flush) de caché ● Fácil de instalar y configurar

Page 9: Entonamiento y perfilado de Drupal

Boost (refs)● Principal: http://drupal.org/project/boost● Conceptos: http://drupal.org/node/545664● Instalación: http://drupal.org/node/545908

Page 10: Entonamiento y perfilado de Drupal

Memcache●Permite integrar Drupal con Memcached.●Memcached es un sistema distribuido, libre y de alta disponibilidad de cacheo de objetos.●Características principales:

● Una API para utilizar Drupal con Memcached a través de las librerías Memcache de PECL o Memcached

● Soporte de Memcache para:● Cacheo● Sesiones● Bloqueos (Locking)

● Un módulo sencillo que provee información acerca de la interacción entre Dupal y Memcached

● Un conjunto de módulos de prueba para probar la configuración del Memcache.

Page 11: Entonamiento y perfilado de Drupal

Memcache (refs)●Principal: http://drupal.org/project/memcache●Conceptos: http://memcached.org/●Instalación:

● http://trentrichardson.com/2010/02/08/installing-memcached-on-ubuntu-for-php/● http://drupal.org/node/1131468

Page 12: Entonamiento y perfilado de Drupal

Profiling●Permite medir y observar los tiempos, memoria y llamadas para recursos del Drupal. Aunque fue concebido de una forma no-intrusiva, se recomienda su desactivación en entornos de producción.●Características principales:

● Provee un conjunto de tablas, gráficos y diagramas para análisis de mediciones y búsqueda de cuellos de botella.

● Realiza mediciones únicamente sobre elementos especificados.

Page 13: Entonamiento y perfilado de Drupal

Profiling (refs)●Principal: http://drupal.org/project/profiling

Page 14: Entonamiento y perfilado de Drupal

Entonamiento y perfiladode Drupal

Depuración y perfilado

Page 15: Entonamiento y perfilado de Drupal

Xdebug

●Es una extensión de PHP que ofrece depuración y capacidades de perfilado.●La información que provee Xdebug:

● Trazas de pila y funciones con parámetros y nombres de funciones, archivos e indicadores de líneas

● Disposición de memoria● Búcles infinitos

●Además ofrece:● Información de cobertura de código● Depuración de scripts desde sistemas externos, por ejemplo:

Eclipse.

Page 16: Entonamiento y perfilado de Drupal

Xdebug (refs)

●Principal: http://xdebug.org/●Documentación: http://xdebug.org/docs/●Configuración Xdebug en remoto con Eclipse: http://techmania.wordpress.com/2008/07/02/debugging-php-in-eclipse-using-xdebug/

Page 17: Entonamiento y perfilado de Drupal

JMeter

●Apache JMeter es una aplicación de escritorio abierta y hecha en Java, que permite probar comportamientos funcionales y medir rendimiento.●Es utilizado para medir el rendimiento de recursos estáticos y dinámicos (archivos, Servlets, scripts de Perl, Objetos Java, Bases de Datos y queries, Servidores de Bases de Datos, etc).●Puede ser utilizada para simular cargas pesadas (Pruebas de Stress).●Ofrece reportes y resúmenes de rendimiento y ejecución.

Page 18: Entonamiento y perfilado de Drupal

Jmeter (refs)

●Principal: http://jakarta.apache.org/jmeter/●Documentación: http://jakarta.apache.org/jmeter/usermanual/index.html

Page 19: Entonamiento y perfilado de Drupal

Entonamiento y perfiladode Drupal

Mejoras y actualizaciones,parcheo y distribuciones

Page 20: Entonamiento y perfilado de Drupal

Mejoras y actualizaciones●En Drupal existen dos tipos de versiones:

● Versiones menores. Identificadas por los números menos significativos, por ejemplo: 6.22 ó 7.2. Actualizar directamente de un número pequeño a cualquier otro mayor.

● Versiones mayores. Identificadas por los números más significativos, por ejemplo: 6.22 ó 7.2. Actualizar de forma escalonada, primero actualización menor y luego a mayor.

●Es importante siempre tener activo el Gestor de Actualizaciones en producción (ver: http://drupal.org/documentation/modules/update)●Las mejoras (upgrade) son introducidas cuando se mueve una instalación de Drupal a versiones mayores, por ejemplo: upgrading 6.22 a 7.2●Las actualizaciones (update) son introducidas cuando se mueve una instalación de Drupal entre versiones menores, por ejemplo: updating 6.1 a 6.22●Las actualizaciones se realizan directamente a través del Admin del Drupal o manualmente. Las mejoras pueden realizarse manualmente o utilizando upgrade.php, ver: UPGRADE.txt

Page 21: Entonamiento y perfilado de Drupal

Mejoras y actualizaciones (refs)

●Acerca de mejoras en Drupal: http://drupal.org/upgrade●Mejora de Drupal 6 a 7: http://drupal.org/documentation/upgrade/6/7●Respaldo de una instalación Drupal: http://drupal.org/upgrade/copying-your-live-site-via-command-line

Page 22: Entonamiento y perfilado de Drupal

Parches

●Un parche es una pieza de código diseñada para resolver un problema, actualizar un programa o data. Esto incluye vulnerabilidades de seguridad, errores (bugs), usabilidad y rendimiento.●Los parches son generados utilizando el programa diff. Por ejemplo:

diff -Naur drupal-current drupal-latest > drupal-current-to-drupal-latest.patch●En instalaciones de Drupal sobre Linux los parches son aplicados con el programa patch. Por ejemplo:

[DRUPAL_HOME]$ patch -p1 --dry-run < drupal-current-to-drupal-latest.patch

Page 23: Entonamiento y perfilado de Drupal

Parches (refs)

●Mejora de Drupal utilizando parches: http://drupal.org/node/359234●Cómo instalar un parche: http://drupal.org/node/14231

Page 24: Entonamiento y perfilado de Drupal

Distribuciones

●Las distribuciones son variaciones (sabores) de Drupal que incluyen un conjunto de módulos preinstalados y modificaciones y configuraciones especiales sobre éstos.●Existen muchas distribuciones para satisfacer diferentes problemas. Puede conseguir una lista extensa de distribuciones en: http://drupaldistrowatch.com/●La distro Pressflow es utilizada ampliamente porque mantiene los módulos por omisión de Drupal y los extiende con otros módulos y configuraciones, con énfasis en: rendimiento, escalabilidad, disponibilidad y pruebas.●La mayoría de mejoras introducidas en Pressflow sobre Drupal 6 han sido portadas a Drupal 7.●Puede conseguir Pressflow en: http://pressflow.org/

Page 25: Entonamiento y perfilado de Drupal

Entonamiento y perfiladode Drupal

Aceleradores Web

Page 26: Entonamiento y perfilado de Drupal

Pagespeed (mod_pagespeed)

●Pagespeed puede ser utilizado por desarrolladores como extensión del navegador (firefox o chrome) para analizar problemas de rendimiento.●Pagespeed puede ser utilizado como un módulo de Apache (mod_pagespeed) para automáticamente optimizar páginas Web y sus recursos mientras son servidas.

Page 27: Entonamiento y perfilado de Drupal

Pagespeed (refs)

●Principal: http://code.google.com/intl/es-MX/speed/page-speed/●Detalle de filtros: http://code.google.com/intl/es-MX/speed/page-speed/docs/config_filters.html

Page 28: Entonamiento y perfilado de Drupal

Varnish

●Varnish es un acelerador HTTP diseñado para sitios dinámicos con altas cargas de trabajo.●Varnish almacena data en su memoria virtual y delega en el Sistema Operativo la decisión de qué pasar a RAM y qué a disco.●Varnish maneja hilos de ejecución por petición. Cuando el límite (configurado) es alcanzado, las peticiones son almacenadas en un buffer de sobrecarga (overflow buffer); sólo cuando este último es sobrecargado se deniegan las conexiones.●Las configuraciones son realizadas utilizando el Lenguaje de Configuraciones de Varnish (VCL). Al iniciar el acelerador, estas configuraciones son traducidas a código C, compiladas y enlazadas con el acelerador.●Posee una interfaz de línea de comandos.

Page 29: Entonamiento y perfilado de Drupal

Varnish (características)

●Soporte de plugins (VMOD)●Soporte ESI (Edge Side Includes)●Soporte Gzip * Gzip Compression and Uncompression●Soporte de directores por DNS, Random, Hashing y direcciones IP ●Soporte de modos Santo (Saint) y de Gracia (Grace)

Page 30: Entonamiento y perfilado de Drupal

Varnish (refs)

●Principal: https://www.varnish-cache.org/●Manual de referencia de Varnish: https://www.varnish-cache.org/docs/3.0/reference/index.html●Ejemplo de archivo VCL para un sitio sobre Drupal o Pressflow: http://highervisibilitywebsites.com/example-varnish-vcl-drupal-pressflow-site●Configuración de Varnish para Pressflow: https://wiki.fourkitchens.com/display/PF/Configure+Varnish+for+Pressflow

Page 31: Entonamiento y perfilado de Drupal

Entonamiento y perfiladode Drupal

Bases de Datos y Optimizadores de código

Page 32: Entonamiento y perfilado de Drupal

MySQL - Fragmentación

●Si se producen inserciones o eliminaciones aleatorias en los índices de una tabla, los índices pueden resultar fragmentados. Esto significa que el orden físico de las páginas de índice en el disco no guarda relación con el orden de los registros en las páginas, o que hay muchas páginas en blanco en los bloques de 64 páginas que se asignan al índice.●Un síntoma de la fragmentación es que una tabla ocupa más espacio del que 'debería' ocupar. Es difícil determinarlo con exactitud, ya que todos los datos e índices en InnoDB se almacenan en estructuras B-tree, cuya porporción de espacio ocupado (fillfactor) puede variar entre el 50% y el 100%.

Page 33: Entonamiento y perfilado de Drupal

MySQL – Slow Queries

●Cuando se inicia con la opción --log-slow-queries[=file_name], mysqld escribe un archivo de registro que contiene todos las sentencias SQL que llevaron más de long_query_time segundos para ejecutarse completamente. El tiempo para adquirir los bloqueos de tabla iniciales no se cuenta como tiempo de ejecución. ●Una sentencia se registra en el registro de consultas lentas después de que haya sido ejecutada y todos los bloqueos liberados. El orden de registro puede diferir del de ejecución.

Page 34: Entonamiento y perfilado de Drupal

MySQL (refs)●Manual de Referencia MySQL 5.0: http://dev.mysql.com/doc/refman/5.0/es/●Activar MySQL Query Log Slow Queries: http://blogofsysadmins.com/activar-mysql-log-slow-queries●Aprendiendo de fragmentación en MySQL: http://www.mysqlperformanceblog.com/2008/05/01/learning-about-mysql-table-fragmentation/●Cómo determinar si una tabla está fragmentada: http://palominodb.com/blog/2010/10/25/how-i-find-mysql-fragmentation●Fragmentación en InnoDB (consíguela y arréglala): http://www.bluegecko.net/mysql/innodb-tablespace-fragmentation-find-it-and-fix-it/●Parche para soportar Maestro-Esclavo sobre Drupal 6: http://www.cestfait.ch/content/drupal-6-patch-masterslave●Configuración Base de Datos Maestro-Esclavo Pressflow: https://wiki.fourkitchens.com/display/PF/Using+database+replication+with+Pressflow+5+and+6?showComments=true&showCommentArea=true#addcomment●Configuración Base de Datos (incluye maestro-esclavo) en Drupal 7: http://drupal.org/node/310071

Page 35: Entonamiento y perfilado de Drupal

MySQL (refs)

●Manual de Referencia MySQL 5.0: http://dev.mysql.com/doc/refman/5.0/es/●Activar MySQL Query Log Slow Queries: http://blogofsysadmins.com/activar-mysql-log-slow-queries●Aprendiendo de fragmentación en MySQL: http://www.mysqlperformanceblog.com/2008/05/01/learning-about-mysql-table-fragmentation/●Cómo determinar si una tabla está fragmentada: http://palominodb.com/blog/2010/10/25/how-i-find-mysql-fragmentation●Fragmentación en InnoDB (consíguela y arréglala): http://www.bluegecko.net/mysql/innodb-tablespace-fragmentation-find-it-and-fix-it/●Parche para soportar Maestro-Esclavo sobre Drupal 6: http://www.cestfait.ch/content/drupal-6-patch-masterslave●Configuración Base de Datos (incluye maestro-esclavo) en Drupal 7: http://drupal.org/node/310071

Page 36: Entonamiento y perfilado de Drupal

APC

●El APC, o caché alternativo de PHP (por sus siglas en inglés de Alternative PHP Cache), es un código de operación de caché libre y abierto para PHP. Su objetivo es el de proporcionar un marco robusto, libre y abierto para optimizar código de PHP intermedio mediante el almacenamiento en caché●Es importante configurar (copiar en algún lugar dentro del DocumentRoot del Apache) el archivo apc.php provisto con la herramienta. Ofrece una interfaz Web con información acerca del uso de la caché, algunas funciones de gestión y gráficos en caso de que la librería GD se encuentre activada.

Page 37: Entonamiento y perfilado de Drupal

APC (refs)

●Manual: http://php.net/manual/es/book.apc.php●Instalación de APC en CentOS 5: http://2bits.com/articles/installing-php-apc-gnulinux-centos-5.html●Benchmark de Drupal utilizando optimizadores de código (APC, eAccelerator y XCached)