SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Entonamiento y perfilado
      de Drupal




         Rodolfo Campos
           @camposer

      Madrid, Octubre de 2011
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
●
Entonamiento y perfilado
      de Drupal

         Qué es
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
Drupal
Entonamiento y perfilado
      de Drupal

        Módulos
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.
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
Boost (refs)
 ●   Principal: http://drupal.org/project/boost
 ●   Conceptos: http://drupal.org/node/545664
 ●   Instalación: http://drupal.org/node/545908
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.
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-
    ●   http://drupal.org/node/1131468
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.
Profiling (refs)
Principal: http://drupal.org/project/profiling
●
Entonamiento y perfilado
      de Drupal

   Depuración y perfilado
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.
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-x
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.
●
Jmeter (refs)
Principal: http://jakarta.apache.org/jmeter/
●


●Documentación:
http://jakarta.apache.org/jmeter/usermanual/index.html
Entonamiento y perfilado
      de Drupal

 Mejoras y actualizaciones,
 parcheo y distribuciones
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
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
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
Parches (refs)
Mejora de Drupal utilizando parches: http://drupal.org/node/359234
●


Cómo instalar un parche: http://drupal.org/node/14231
●
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/
●
Entonamiento y perfilado
      de Drupal

    Aceleradores Web
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.
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
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.
●
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)
●
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
Entonamiento y perfilado
      de Drupal

     Bases de Datos y
  Optimizadores de código
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%.
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.
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-fragme
●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+
●Configuración Base de Datos (incluye maestro-esclavo) en Drupal 7:
http://drupal.org/node/310071
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
●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-fi
●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
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.
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)

Más contenido relacionado

La actualidad más candente

Servidores de mapas en alta disponibilidad CyLiconValley
Servidores de mapas en alta disponibilidad CyLiconValleyServidores de mapas en alta disponibilidad CyLiconValley
Servidores de mapas en alta disponibilidad CyLiconValleyAlvaro García Loaisa
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDaniel Cruz
 
Liferay - Actualizaciones: presente y futuro
Liferay - Actualizaciones: presente y futuroLiferay - Actualizaciones: presente y futuro
Liferay - Actualizaciones: presente y futuroJosé A. Jiménez
 
Migración de datos en drupal 8
Migración de datos en drupal 8Migración de datos en drupal 8
Migración de datos en drupal 8Javier Gomez
 
Anatomia de un módulo en drupal 8
Anatomia de un módulo en drupal 8Anatomia de un módulo en drupal 8
Anatomia de un módulo en drupal 8Javier Gomez
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 
Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónLoja Valle de Tecnología
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJCMicael Gallego
 
Aprendiendo SQL 2
Aprendiendo SQL 2 Aprendiendo SQL 2
Aprendiendo SQL 2 Daniel Cruz
 

La actualidad más candente (11)

Servidores de mapas en alta disponibilidad CyLiconValley
Servidores de mapas en alta disponibilidad CyLiconValleyServidores de mapas en alta disponibilidad CyLiconValley
Servidores de mapas en alta disponibilidad CyLiconValley
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Liferay - Actualizaciones: presente y futuro
Liferay - Actualizaciones: presente y futuroLiferay - Actualizaciones: presente y futuro
Liferay - Actualizaciones: presente y futuro
 
Migración de datos en drupal 8
Migración de datos en drupal 8Migración de datos en drupal 8
Migración de datos en drupal 8
 
Anatomia de un módulo en drupal 8
Anatomia de un módulo en drupal 8Anatomia de un módulo en drupal 8
Anatomia de un módulo en drupal 8
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-Distribución
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Manualcake
ManualcakeManualcake
Manualcake
 
Java desde cero maven
Java desde cero mavenJava desde cero maven
Java desde cero maven
 
Aprendiendo SQL 2
Aprendiendo SQL 2 Aprendiendo SQL 2
Aprendiendo SQL 2
 

Similar a Entonamiento y perfilado de Drupal

Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadIván Campaña Naranjo
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalSiteGround España
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxSergio Antonio Ochoa Martinez
 
cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxIgor Rodriguez
 
Alta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerAlta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerNelson Calero
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a DrupalPedro Cambra
 
Taller de Drupal - Sesion 1
Taller de Drupal -  Sesion 1Taller de Drupal -  Sesion 1
Taller de Drupal - Sesion 1SEAT, S.A.
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!SergioIglesiasNET
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadIván Campaña Naranjo
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10Keopx
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal CcrtvPedro Cambra
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Curso de PostgreSQL
Curso de PostgreSQLCurso de PostgreSQL
Curso de PostgreSQLEQ SOFT EIRL
 
Drupal 7 (2)
Drupal 7 (2)Drupal 7 (2)
Drupal 7 (2)jecol59
 

Similar a Entonamiento y perfilado de Drupal (20)

Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
 
cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docx
 
Alta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerAlta disponibilidad con Pacemaker
Alta disponibilidad con Pacemaker
 
Drupal Sitebuilding 101
Drupal Sitebuilding 101Drupal Sitebuilding 101
Drupal Sitebuilding 101
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 
Taller de Drupal - Sesion 1
Taller de Drupal -  Sesion 1Taller de Drupal -  Sesion 1
Taller de Drupal - Sesion 1
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!
 
Headless Wordpress with React & GraphQL
Headless Wordpress with React & GraphQLHeadless Wordpress with React & GraphQL
Headless Wordpress with React & GraphQL
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidad
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
 
Hadoop en accion
Hadoop en accionHadoop en accion
Hadoop en accion
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Curso de PostgreSQL
Curso de PostgreSQLCurso de PostgreSQL
Curso de PostgreSQL
 
Drupal 7 (2)
Drupal 7 (2)Drupal 7 (2)
Drupal 7 (2)
 

Más de camposer

Curso de Ajax
Curso de AjaxCurso de Ajax
Curso de Ajaxcamposer
 
Fundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLFundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLcamposer
 
Fundamentos de SQL
Fundamentos de SQLFundamentos de SQL
Fundamentos de SQLcamposer
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básicocamposer
 
Seguridad web
Seguridad webSeguridad web
Seguridad webcamposer
 
Linear Regression Parameters
Linear Regression ParametersLinear Regression Parameters
Linear Regression Parameterscamposer
 
Entonamiento de aplicaciones Web (Enfasis en PHP)
Entonamiento de aplicaciones Web (Enfasis en PHP)Entonamiento de aplicaciones Web (Enfasis en PHP)
Entonamiento de aplicaciones Web (Enfasis en PHP)camposer
 
Extracción de Requerimientos
Extracción de RequerimientosExtracción de Requerimientos
Extracción de Requerimientoscamposer
 

Más de camposer (10)

Curso de Ajax
Curso de AjaxCurso de Ajax
Curso de Ajax
 
Hadoop
HadoopHadoop
Hadoop
 
Fundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLFundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQL
 
Fundamentos de SQL
Fundamentos de SQLFundamentos de SQL
Fundamentos de SQL
 
MongoDB
MongoDBMongoDB
MongoDB
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básico
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Linear Regression Parameters
Linear Regression ParametersLinear Regression Parameters
Linear Regression Parameters
 
Entonamiento de aplicaciones Web (Enfasis en PHP)
Entonamiento de aplicaciones Web (Enfasis en PHP)Entonamiento de aplicaciones Web (Enfasis en PHP)
Entonamiento de aplicaciones Web (Enfasis en PHP)
 
Extracción de Requerimientos
Extracción de RequerimientosExtracción de Requerimientos
Extracción de Requerimientos
 

Entonamiento y perfilado de Drupal

  • 1. Entonamiento y perfilado de Drupal Rodolfo Campos @camposer Madrid, Octubre de 2011
  • 2. 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 ●
  • 3. Entonamiento y perfilado de Drupal Qué es
  • 4. 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
  • 6. Entonamiento y perfilado de Drupal Módulos
  • 7. 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.
  • 8. 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
  • 9. Boost (refs) ● Principal: http://drupal.org/project/boost ● Conceptos: http://drupal.org/node/545664 ● Instalación: http://drupal.org/node/545908
  • 10. 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.
  • 11. 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- ● http://drupal.org/node/1131468
  • 12. 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.
  • 14. Entonamiento y perfilado de Drupal Depuración y perfilado
  • 15. 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.
  • 16. 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-x
  • 17. 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. ●
  • 19. Entonamiento y perfilado de Drupal Mejoras y actualizaciones, parcheo y distribuciones
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. Parches (refs) Mejora de Drupal utilizando parches: http://drupal.org/node/359234 ● Cómo instalar un parche: http://drupal.org/node/14231 ●
  • 24. 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/ ●
  • 25. Entonamiento y perfilado de Drupal Aceleradores Web
  • 26. 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.
  • 27. 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
  • 28. 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. ●
  • 29. 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) ●
  • 30. 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
  • 31. Entonamiento y perfilado de Drupal Bases de Datos y Optimizadores de código
  • 32. 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%.
  • 33. 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.
  • 34. 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-fragme ●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+ ●Configuración Base de Datos (incluye maestro-esclavo) en Drupal 7: http://drupal.org/node/310071
  • 35. 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 ●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-fi ●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
  • 36. 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.
  • 37. 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)