SB IT Media, S.L. Check-list de Rendimiento y Escalabilidad Drupal. Derivada de la Drupal Performance and Scalability Checklist de la Drupal Performance Agency con licencia Creative Commons Attribution-ShareAlike2.0 Pedro González Serrano 01/04/2011
Motivación Este documento, en forma de lista de comprobación, pretende ayudar a definir una estrategia efectiva para mejorar el rendimiento y planificar la escalabilidad de sus sitios impulsados por Drupal. Este documento está basado en Drupal Performance and Scalability Checklist de la Drupal Performance Agency (http://tag1consulting.com/drupal_performance_agency), publicado con licencia Creative Commons Attribution-ShareAlike2.0. Maque las casillas que procedan, tache lo que no proceda, rellene los huecos si es aplicable e incluya cualquier información que estime oportuna. Objetivos de negocio Determine qué objetivos de negocio están motivando estos ajustes de rendimiento. Tasa de crecimiento. Impresiones de anuncios. Medidas de la unidad de negocio: Metas cuantitativas Determine qué metas cuantitativas están motivando estos ajustes de rendimiento. Vistas de página mensuales: Tiempos de carga: Anónimos: Registrados: Tiempos de generación (tiempo que emplea el servidor en generar el HTML): Anónimos: Registrados: Pico semanal (o máximo puntual): Anónimos: Registrados: Nº de usuarios mensuales: Anónimos: Registrados: Nº de susciptores: Nº de feeds: Tiempo de carga primera visita: Tiempo de carga portada: Tiempo de carga pág. más lenta: Tiempo de envío de contenido: Gestión de riesgos Determine qué objetivos de gestión de riesgo están motivando estos ajustes de rendimiento. Alta disponibilidad
Ventana aceptable de pérdida de datos: Tiempo aceptable fuera de servicio: Ventana de recuperación de datos: Recuperación de fallo catastrófico: Otros objetivos Determine cualquieras otras metas que estén motivando estos ajustes de rendimiento. Medir de forma precisa el rendimiento del sitio. Encontrar y documentar cuellos de botella de rendimiento. Solucionar cuellos de botella de rendimiento. Afrontar específicos problemas de rendimiento conocidos con anterioridad: Mejorar el rendimiento del core de Drupal, contribuyendo las mejoras de vuelta al proyecto bajo GPL. Disponibilidad Antes de hacer cualquier cambio en su infraestructura, es crítico que implemente y pruebe una estrategia efectiva de backup. Almacenar todos los archivos de configuración en un sistema de control de versiones. Detalles: Copias de respaldo regulares. Realización cada, manteniendo copias. Almacenamiento de las copias en otra localización. Detalles: Replicación de base de datos. Detales: Replicación de archivos. Detalles: Cuántas horas de datos puede permitirse perder en el caso de un fallo catastrófico de la base de datos?: RAID: Hardware: Software: DRDB. Detalles: Redundancia de red: Backups validados por última vez:
Procesos Esta sección está destinada a entender los procesos que emplea para gestionar su sitio. Servidor(es) de desarrollo: Servidor(es) de integración (staging): Proceso formal de despliegue (deployment) de nuevo código: Lista(s) de correo internas: Sistema de seguimiento de bugs: Intranet del proyecto: Monitorización Es imprescindible asegurarse, antes de realizar ajustes de rendimiento, de que se dispone de suficientes sistemas de monitorización emplazados con anterioridad. Se monitoriza localmente de forma activa la salud y el rendimiento de todos los sistemas empleando las siguientes herramientas: o Cacti o MySQL Enterprise Monitor o Splunk o Drupal Accesslog o Nagios o Munin o Monit o M/Monit o Se monitoriza remotamente la salud y el rendimiento de las siguientes páginas críticas: o Portada (anónimos / registrados) Se monitorizan las páginas con las siguientes herramientas: o Gomez o Keynote o GTmetrix Se analizan regularmente los archivos de registro (logs), especifique las herramientas usadas: o Apache access_log: o Apache error_log: o Squid access_log: o MySQL slow_query_log: o PHP error_log: Se monitoriza remotamente el comportamiento del sitio con las siguientes herramientas: o Google Analytics o o Google Webmaster Tools o
Red Esta sección está diseñada para recabar los detalles completos sobre su infraestructura de red. Recopile y adjunte un diagrama de red actualizado. Velocidad de interconexión entre servidores: Dispositivos de interconexión entre servidores: hubs /switches / virtual adapters / VPN Velocidad de conexión con el exterior (ISP) de sus servidores: o Subida (hacia Internet): o Bajada (desde Internet): Redundancia: Gestiona sus propios DNS: Balanceador(es) de carga: Firewalls(s): Emplea CDN(s): Sistemas En este paso se persigue obtener una comprensión de su infraestructura desde un punto de vista por-servidor. Recopile y adjunte la información pedida para cada máquina (aunque se trate de clones), indicando el nombre de acuerdo al diagrama de red elaborado previamente. Servidores Linux: o Proposito(s): o Distribución(es) y versión(es): o Recopile vmstat 3 20 o Recopile top c2 o Recopile ps auxww o Recopile netstat -in o Recopile df -h o Recopile mount o Recopile cat /proc/meminfo o Recopile cat /proc/cpuinfo Servidores BSD: o Proposito(s): o Distribición(es) y versión(es): o Memoria /CPU: Servidores Windows: o Proposito(s): o Versión(es) y ServicePack(s): o Memoria /CPU: Balanceador(es) de carga:
Firewall(s): Si sus servidores están virtualizados, describa la plataforma y configuración: Otros servidores: Aplicaciones Para finalizar pretendemos obtener una visión de su infraestructura por aplicación.indique claramente en qué máquina se encuentra funcionando cada aplicación y recopila la información pedida para cada instancia (aunque se trate de clones). Servidores web Apache, versión(es): o Recopile apache2.conf, httpd.conf los archivos vhost aplicables y cualquier archivo de configuración cargado mediante include. o Recopile la salida de apache2 -M (procese /etc/apache2/envvars previamente en caso de error) o Recopile la salida de apache2 -l (procese /etc/apache2/envvars previamente en caso de error) Lighttpd, versión(es): o Recopile lighttpd.conf o Recopile cualquier include aplicable (incluidos archivos.lua para url rewritting) Nginx, versión(es): o Recopile nginx.conf, los archivos vhost aplicables y cualquier archivo de configuración cargado mediante include. o Recopile proxy.conf y fastcgi.conf. IIS, versión(es): o Recopile la configuración completa del servidor. Otros. Cual(es), versión(es): o Recopile la configuración completa del servidor. Procesadores PHP Utilizando PHP, versión(es): Tipo de puente (comunicación) con el servidor web: o o o o CGI Fast-CGI mod_fcgid mod_php o FPM (FastCGI Process Manager) o Otro:
Recopile la salida de phpinfo() Recopile los archivos php.ini aplicables (y los archivos de configuración cargados mediante include) Utilizando opcode cachés. Nombre(s) Versión(es) Recopile la salida de apc.php o el archivo equivalente en su opcode caché. Servidores de aplicaciones Java Utilizando Tomcat, Jetty, Otro:. versión(es): o Recopile los archivos de configuración Sirviendo las siguientes aplicaciones: o Solr, versión(es): Recopile los archivos de configuración o Lucene, versión(es): Recopile los archivos de configuración o Otras. Nombre(s), versión(es) Recopile los archivos de configuración Proxy-cachés Utilizando Squid, versión(es): o Recopile squid.conf o Recopile los detalles de implementación Utilizando Varnish, versión(es): o Recopile default.vcl (o cualquier vcl aplicable) o Recopile varnish (archivo de configuración del daemon) Bases de datos Utilizando MySQL, PerconaDB, MariaDB. Versión(es): o Recopile my.cnf (o equivalente) junto con cualquier archivo de configuración cargado por include. o Recopile SHOW STATUS desde un usuario con privilegios o Recopile SHOW VARIABLES desde un usuario con privilegios o Recopile mysqlreport desde el/los sistema(s) o Recopile mysqlsla desde el slow query log Utilizando PostgreSQL, SQLlite, Oracle, MS-SQL Server. Versión(es): o Recopile cualquier configuración relevante Utilizando Cassandra, MongoDB. Versión(es): o Detalles: o Recopile cualquier configuración relevante Servidores de archivos Utilizando NFS. Versión(es): o Modo: kernel / usuario (táchese lo que no proceda) o Recopile /etc/exports o Recopile /proc/net/rpc/nfsd
Utilizando Gluster. Versión(es): o Recopile los archivos de configuración y realice un diagrama de conexión de bricks. Servidores clave/valor Utilizando Memcached. Versión(es): o Detalles: o Tipo de conector php: PECL memcache / PECL memcached / otro: o Tipo de conector Drupal: Memcached / CacheRouter / otro: Utilizando Redis. Versión(es): o Detalles: o Tipo de conector Drupal: Drupal Utilizando Drupal / Pressflow. Versión(es): o Recopile una lista de todos los módulos del core habilitados o Recopile una lista de todos los parches aplicados al core o Recopile una lista de todos los módulos contrib habilitados, versión y parches aplicados. o Recopile una lista de todos los módulos custom, junto con su código. o Activada la caché de páginas? Ajustes: o Activado Boost? Ajustes: o Cualquier detalle relevante: Miscelánea Otras aplicaciones no contempladas y sus detalles: