SlideShare una empresa de Scribd logo
Fernando Paredes

Karim Boudjema
   1. Importancia del rendimiento (Fer)
   2. Rendimiento - Escalabilidad (K)
   3. Caching (Fer)
   4. Tipos de memoria caché: Servidor Web, PHP, Drupal y Base
    de datos (K)
   6. Testing JM Meter - XHProf- AB - Devel (K)
   7. Optimizar el código PHP (APC+buenas praticas) (Fer)
   8. Core Cache De Drupal (tablas + configuración) (K)
   9. APC, Memcache, File (Fer)
   10. Boost (K)
   11. Demo y Conclusiones (K)
Karim Boudjema (KarimB)

Drupal themer and developer

Con Drupal desde 2008

Miembro activo de Drupal
Bolivia y Drupal Belgium

Especialidades: Text Mining
(NLP), Periódicos online

Drupal Blog:

http://www.webenstock.com
Trabajo


                      Technical Leader
      @develCuy                          Comunidad
Facebook, Twitter, Identi.ca         Fundador de Drupal Perú

     http://develcuy.com             http://drupal.org/user/125473
1.   Afecta la experiencia del usuario

1.   SEO, los buscadores han comenzado a
     despriorizar las páginas web lentas

2.   La arquitectura puede verse muy afectada
     con tal de conseguir mejor rendimiento.
Satisfecho
Insatisfecho
Satisfecho
Insatisfecho
Satisfecho
Insatisfecho
No importa cuan asombrosa sea una página
     web, si es lenta entonces el usuario
insatisfecho ni alcanzará a verla o nunca más
 volverá, incluido el usuario “indexador web”.

El desafío és proveer contenidos, formatos y
  funcionalidades sin afectar el rendimiento.

      El rendmiento está dirigido por la
      arquitectura (architecture driven)
   Escalabilidad
    ◦ El sistema puede acomodarse al incremento de
      su uso
      su volumen de datos
   Rendimiento
    ◦ Tiempo de respuesta del servidor + tiempo de
      carga de la página
      „Que tan rápido se carga la página?‟
Del Top 50 de los sitios de AL, todos

                                                          los sitios toman menos del 14% del

                                                          tiempo de carga total, para obtener el

                                                          documento HTML.



                                                          El 86% restante es para obtener los

                                                          documentos vinculados al documento

                                                          HTML como CSS, JS, imágenes.



                                                          Una clave de la performance se

                                                          encuentra en la optimización del

                                                          Front End.

elcomercio.pe - HTML = 622ms (3%) – Documents: 19852 ms
datos duplicados de otros
"Es un conjunto de
  originales, con la propiedad de que los datos
  originales son costosos de acceder,
  normalmente en tiempo, respecto a la copia en la caché.
  Cuando se accede por primera vez a un dato,   se hace
  una copia en el caché; los accesos siguientes se
  realizan a dicha copia, haciendo que el tiempo de
  acceso [...] al dato sea menor."
  - Wikipedia
Caché
vacía




Caché
llena
SQL
                             APACHE         PHP      Queries    MySQL



Browser         Reverse   MOD               OpCode     Cache    Query
 Cache    CDN             Expires   Boost
                 proxy    Deflate
                                             Cache     engine   Cache


                                      LINUX
   No podemos implementar políticas de
    rendimiento sin una evaluación.

   Apache Bench (AB)
   Devel
   Jmeter
   XHProf (Ahora integrado a devel)
   On line tools:
    ◦ Load Storm: http://loadstorm.com/
    ◦ Monitis: http://portal.monitis.com/



                                       Here comes your footer  Page 16
◦ Fácil, simple y todos lo tenemos instalado

◦ ab -c 1 -n 100 http://example.dev/
◦ ab -c 1 -n 100 –C PHPSESSID=<sessid> http://example.dev/

◦ Donde
   -c = concurrencia de los requerimientos
   -n = total de requerimientos a la pagina
◦ En este caso haremos 100 requermientos a la página
  http://example.dev/

◦ Un solo indicador: „Requests per second‟

◦ Evaluaremos nuestras distintas políticas de caché con este
  indicador
   Permite evaluar para una página:
    ◦ Mysql
         # total de consultas
         Tiempos total para todas las consultas en ms
         Ver las consultas más lentas
         Para cada consulta
             Tiempo de realización en ms
             # de veces que la consulta ha sido realizada
             Ver EXPLAIN
    ◦ Página
       Tiempo total de carga de la página en ms
    ◦ Hacer la diferencia entre la performance de Mysql y del resto de la página
    ◦ Uso de la Memoria
   Para configurar
    ◦ Configuation >Development > Devel Settings
   Performance Logging
    ◦ Ya no es parte del módulo devel desde 07/2011
    ◦ Será parte del módulo Performance:
      http://drupal.org/project/performance
    ◦ Podemos utilizar Profiling
       http://drupal.org/project/profiling
“¿Éslo que la gente usualmente
  considera la forma apropiada de hacer algo?
  ¿Hay una forma "usual", es decir, una
  forma generalmente aceptada? ¿Se
  endiente como la forma “apropiada”? Si
  podemos responder esto afirmativamente,
  entonces tenemos una Buena Práctica.” (traducido)
  - The IT Skeptic
En el código fuente de Drupal, la caché se
  guarda en dos lugares diferentes:
- La memoria estática de PHP
- La caché de Drupal
<?php
function phpmemory_set() {
   static $value;
   if (!isset($value)) {
    $value = "gran cantidad de datos";
   }
   return $value;
 }

?>
<?php
function drupalmemory_set() {
   $cache = cache_get('value');
   if (empty($cache->data)) {
     $value = "gran cantidad de datos";
     cache_set($value, 'value');
   }
   else {
     $value = $cache->data;
   }
   return $value;
 }

?>
<?php
  static $value;
   if (!isset($value)) {
     $cache = cache_get('value');
     if (empty($cache->data)) {
       $value = "gran cantidad de datos";
       cache_set($value, 'value');
     }
     else {
       $value = $cache->data;
     }
   }
   return $value;
?>
   Evita múltiples consultas a la base de datos

   Sirve sobre todo para los usuarios anónimos

   Conocer cada tabla nos permitirá elegir los bins con los
    distintos cache engine (memcache, file, apc)

   Nos permite ganar 500% a 700% de performance para
    usuarios no autenticados

   En D7 tenemos nuevas tablas
   El sistema de caché de Drupal almacena sus datos en las
        siguientes tablas de la base de datos:
Por defecto                                               Configurable

1. cache – Conf. de los modules, schemas, themes ect.     1.   cache_page – registra una copia
2. cache_bootstrap – variables y información durante el        completa de del código html de las
   bootstrap                                                   paginas pero solo para usuarios no
3. cache_field – fields de las entidades                       autenticados.
4. cache_images – imágenes procesadas                     2.   cache_block – registra una copia de
5. cache_path – URL alias                                      los bloques
6. cache_menu – registra una copia de los menús y de las
   URLs asociadas a estos menús
7. cache_filter – registra una copia del contenido de
   nuestros nodos filtrados
8. cache_form – registra una copia de los formularios del
   sitio
9. cache_update – registra los updates disponibles
   Vamos en Configuration > Development > Performance
   Caché de páginas
    ◦ Mínimo de permanencia en cache de Drupal
    ◦ Máximo de permanencia en cache externo
    ◦ Compresión de páginas: siempre mejor con Apache
       Para ver si nuestro server ya realiza la compresión:
        http://www.whatsmyip.org/http_compression/

   Caché de bloques
    ◦ No lo necesitamos para usuarios no autenticados

   Optimizaciones del ancho de banda
    ◦ Optimizar archivos CSS: Activado (solo en producción)
    ◦ Optimizar archivos JavaScript: Activado (solo en prod.)
http://drupal.org/project/apc


                PHP              PHP
                256mb            256mb

               APC               APC
              64MB              64MB
http://drupal.org/project/memcache
                           Memcache
              PHP
                            server
              256mb
                            64MB




                           Memcache
              PHP
                            server
              256mb
                            64MB}
http://drupal.org/project/filecache

                PHP                   Filesystem
                256mb                    1 GB




                PHP                   Filesystem
                256mb                    1 GB
Memcache
   PHP                Filesystem
            server
   256mb                 1 GB
 APC        64MB
64MB




           Memcache
   PHP                Filesystem
            server
   256mb                 1 GB
 APC        64MB
64MB
•Boost crea un archivo .html para
todas las páginas visitadas por los
usuarios anónimos.

•El próximo usuario anónimo leerá
este archivo .html en vez de ir al
index.php y la BD.

•Es un excelente caché por
archivos estáticos que se ejecuta
desde el .htaccess gracias a
mod_rewrite.
   Pensar en performance desde el principio
   Performance es un diseño ligero
   Pocos módulos (process)
   APC Opcode
   Consultas Mysql optimizadas (Explain) y Query Cache
   Robot.txt (Crawl-Delay: 10)
   Usuarios anónimos
    ◦   Cache del core (solo páginas)
    ◦   Boost
    ◦   Varnish
    ◦   Cache actions (mantenimiento)
   Usuarios autenticados
    ◦ Cache engine APC para Bins importantes y con mucha actualización
    ◦ Cache engine memcache si cantidad grande de datos
    ◦ Cache file si no cambia mucho en el tiempo
                              Testing, testing, testing…
Gracias

PREGUNTAS?

Más contenido relacionado

La actualidad más candente

Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan Ladetto
 
Creación de un plugin para WordPress
Creación de un plugin para WordPressCreación de un plugin para WordPress
Creación de un plugin para WordPressDani Reguera Bakhache
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDaniel Cruz
 
Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Alejandro E Brito Monedero
 
Curso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressCurso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressIrontec
 
AlwaysON Lecciones Aprendidas
AlwaysON Lecciones AprendidasAlwaysON Lecciones Aprendidas
AlwaysON Lecciones AprendidasSpanishPASSVC
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IOSpanishPASSVC
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerSpanishPASSVC
 
SQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nubeSQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nubeEduardo Castro
 
Manual de instalacion de Mongo db
Manual de instalacion de Mongo dbManual de instalacion de Mongo db
Manual de instalacion de Mongo dbRuby B. Blanca
 
Aprendiendo SQL 2
Aprendiendo SQL 2 Aprendiendo SQL 2
Aprendiendo SQL 2 Daniel Cruz
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training DaysLa Drupalera
 
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoCharla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoMarcos Ramajo
 

La actualidad más candente (19)

Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Creación de un plugin para WordPress
Creación de un plugin para WordPressCreación de un plugin para WordPress
Creación de un plugin para WordPress
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Drupal Sitebuilding 101
Drupal Sitebuilding 101Drupal Sitebuilding 101
Drupal Sitebuilding 101
 
Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?
 
Curso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressCurso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de Wordpress
 
AlwaysON Lecciones Aprendidas
AlwaysON Lecciones AprendidasAlwaysON Lecciones Aprendidas
AlwaysON Lecciones Aprendidas
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IO
 
Couchdb
CouchdbCouchdb
Couchdb
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
 
SQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nubeSQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nube
 
Drupal - Introducción
Drupal - IntroducciónDrupal - Introducción
Drupal - Introducción
 
Manual de instalacion de Mongo db
Manual de instalacion de Mongo dbManual de instalacion de Mongo db
Manual de instalacion de Mongo db
 
Couch db
Couch dbCouch db
Couch db
 
Aprendiendo SQL 2
Aprendiendo SQL 2 Aprendiendo SQL 2
Aprendiendo SQL 2
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
Diferencia entre SGBD
Diferencia entre SGBDDiferencia entre SGBD
Diferencia entre SGBD
 
Wordpress
WordpressWordpress
Wordpress
 
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoCharla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
 

Similar a Performance en Drupal 7

Similar a Performance en Drupal 7 (20)

Aceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPAceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHP
 
Aceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPAceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHP
 
Aceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPAceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHP
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Curso de php
Curso de phpCurso de php
Curso de php
 
La Caché
La CachéLa Caché
La Caché
 
Kohana
KohanaKohana
Kohana
 
Phpmyadmin
PhpmyadminPhpmyadmin
Phpmyadmin
 
Manualcake
ManualcakeManualcake
Manualcake
 
Rendimiento extremo en php
Rendimiento extremo en phpRendimiento extremo en php
Rendimiento extremo en php
 
Escalabilidad
EscalabilidadEscalabilidad
Escalabilidad
 
Documento Web2Py
Documento Web2PyDocumento Web2Py
Documento Web2Py
 
Tuning Lamp
Tuning LampTuning Lamp
Tuning Lamp
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
 
Documentacion Proyecto Final
Documentacion Proyecto FinalDocumentacion Proyecto Final
Documentacion Proyecto Final
 
Aspnet40 Cache Extensibility
Aspnet40 Cache ExtensibilityAspnet40 Cache Extensibility
Aspnet40 Cache Extensibility
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Sacándole el jugo a apache
Sacándole el jugo a apacheSacándole el jugo a apache
Sacándole el jugo a apache
 
Apache
ApacheApache
Apache
 

Último

Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfjjfch3110
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.AlejandraCasallas7
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfAlejandraCasallas7
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerRobertoCarrancioFern
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesPABLOCESARGARZONBENI
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaFernando Villares
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 

Último (20)

Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 

Performance en Drupal 7

  • 2. 1. Importancia del rendimiento (Fer)  2. Rendimiento - Escalabilidad (K)  3. Caching (Fer)  4. Tipos de memoria caché: Servidor Web, PHP, Drupal y Base de datos (K)  6. Testing JM Meter - XHProf- AB - Devel (K)  7. Optimizar el código PHP (APC+buenas praticas) (Fer)  8. Core Cache De Drupal (tablas + configuración) (K)  9. APC, Memcache, File (Fer)  10. Boost (K)  11. Demo y Conclusiones (K)
  • 3. Karim Boudjema (KarimB) Drupal themer and developer Con Drupal desde 2008 Miembro activo de Drupal Bolivia y Drupal Belgium Especialidades: Text Mining (NLP), Periódicos online Drupal Blog: http://www.webenstock.com
  • 4. Trabajo Technical Leader @develCuy Comunidad Facebook, Twitter, Identi.ca Fundador de Drupal Perú http://develcuy.com http://drupal.org/user/125473
  • 5. 1. Afecta la experiencia del usuario 1. SEO, los buscadores han comenzado a despriorizar las páginas web lentas 2. La arquitectura puede verse muy afectada con tal de conseguir mejor rendimiento.
  • 9. No importa cuan asombrosa sea una página web, si es lenta entonces el usuario insatisfecho ni alcanzará a verla o nunca más volverá, incluido el usuario “indexador web”. El desafío és proveer contenidos, formatos y funcionalidades sin afectar el rendimiento. El rendmiento está dirigido por la arquitectura (architecture driven)
  • 10. Escalabilidad ◦ El sistema puede acomodarse al incremento de  su uso  su volumen de datos  Rendimiento ◦ Tiempo de respuesta del servidor + tiempo de carga de la página  „Que tan rápido se carga la página?‟
  • 11. Del Top 50 de los sitios de AL, todos los sitios toman menos del 14% del tiempo de carga total, para obtener el documento HTML. El 86% restante es para obtener los documentos vinculados al documento HTML como CSS, JS, imágenes. Una clave de la performance se encuentra en la optimización del Front End. elcomercio.pe - HTML = 622ms (3%) – Documents: 19852 ms
  • 12.
  • 13. datos duplicados de otros "Es un conjunto de originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en la caché. Cuando se accede por primera vez a un dato, se hace una copia en el caché; los accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso [...] al dato sea menor." - Wikipedia
  • 15. SQL APACHE PHP Queries MySQL Browser Reverse MOD OpCode Cache Query Cache CDN Expires Boost proxy Deflate Cache engine Cache LINUX
  • 16. No podemos implementar políticas de rendimiento sin una evaluación.  Apache Bench (AB)  Devel  Jmeter  XHProf (Ahora integrado a devel)  On line tools: ◦ Load Storm: http://loadstorm.com/ ◦ Monitis: http://portal.monitis.com/ Here comes your footer  Page 16
  • 17. ◦ Fácil, simple y todos lo tenemos instalado ◦ ab -c 1 -n 100 http://example.dev/ ◦ ab -c 1 -n 100 –C PHPSESSID=<sessid> http://example.dev/ ◦ Donde  -c = concurrencia de los requerimientos  -n = total de requerimientos a la pagina ◦ En este caso haremos 100 requermientos a la página http://example.dev/ ◦ Un solo indicador: „Requests per second‟ ◦ Evaluaremos nuestras distintas políticas de caché con este indicador
  • 18. Permite evaluar para una página: ◦ Mysql  # total de consultas  Tiempos total para todas las consultas en ms  Ver las consultas más lentas  Para cada consulta  Tiempo de realización en ms  # de veces que la consulta ha sido realizada  Ver EXPLAIN ◦ Página  Tiempo total de carga de la página en ms ◦ Hacer la diferencia entre la performance de Mysql y del resto de la página ◦ Uso de la Memoria  Para configurar ◦ Configuation >Development > Devel Settings
  • 19. Performance Logging ◦ Ya no es parte del módulo devel desde 07/2011 ◦ Será parte del módulo Performance: http://drupal.org/project/performance ◦ Podemos utilizar Profiling  http://drupal.org/project/profiling
  • 20.
  • 21. “¿Éslo que la gente usualmente considera la forma apropiada de hacer algo? ¿Hay una forma "usual", es decir, una forma generalmente aceptada? ¿Se endiente como la forma “apropiada”? Si podemos responder esto afirmativamente, entonces tenemos una Buena Práctica.” (traducido) - The IT Skeptic
  • 22. En el código fuente de Drupal, la caché se guarda en dos lugares diferentes: - La memoria estática de PHP - La caché de Drupal
  • 23. <?php function phpmemory_set() {  static $value;  if (!isset($value)) {  $value = "gran cantidad de datos";  }  return $value;  } ?>
  • 24. <?php function drupalmemory_set() {  $cache = cache_get('value');  if (empty($cache->data)) {  $value = "gran cantidad de datos";  cache_set($value, 'value');  }  else {  $value = $cache->data;  }  return $value;  } ?>
  • 25. <?php static $value;  if (!isset($value)) {  $cache = cache_get('value');  if (empty($cache->data)) {  $value = "gran cantidad de datos";  cache_set($value, 'value');  }  else {  $value = $cache->data;  }  }  return $value; ?>
  • 26. Evita múltiples consultas a la base de datos  Sirve sobre todo para los usuarios anónimos  Conocer cada tabla nos permitirá elegir los bins con los distintos cache engine (memcache, file, apc)  Nos permite ganar 500% a 700% de performance para usuarios no autenticados  En D7 tenemos nuevas tablas
  • 27. El sistema de caché de Drupal almacena sus datos en las siguientes tablas de la base de datos: Por defecto Configurable 1. cache – Conf. de los modules, schemas, themes ect. 1. cache_page – registra una copia 2. cache_bootstrap – variables y información durante el completa de del código html de las bootstrap paginas pero solo para usuarios no 3. cache_field – fields de las entidades autenticados. 4. cache_images – imágenes procesadas 2. cache_block – registra una copia de 5. cache_path – URL alias los bloques 6. cache_menu – registra una copia de los menús y de las URLs asociadas a estos menús 7. cache_filter – registra una copia del contenido de nuestros nodos filtrados 8. cache_form – registra una copia de los formularios del sitio 9. cache_update – registra los updates disponibles
  • 28. Vamos en Configuration > Development > Performance  Caché de páginas ◦ Mínimo de permanencia en cache de Drupal ◦ Máximo de permanencia en cache externo ◦ Compresión de páginas: siempre mejor con Apache  Para ver si nuestro server ya realiza la compresión: http://www.whatsmyip.org/http_compression/  Caché de bloques ◦ No lo necesitamos para usuarios no autenticados  Optimizaciones del ancho de banda ◦ Optimizar archivos CSS: Activado (solo en producción) ◦ Optimizar archivos JavaScript: Activado (solo en prod.)
  • 29.
  • 30. http://drupal.org/project/apc PHP PHP 256mb 256mb APC APC 64MB 64MB
  • 31. http://drupal.org/project/memcache Memcache PHP server 256mb 64MB Memcache PHP server 256mb 64MB}
  • 32. http://drupal.org/project/filecache PHP Filesystem 256mb 1 GB PHP Filesystem 256mb 1 GB
  • 33. Memcache PHP Filesystem server 256mb 1 GB APC 64MB 64MB Memcache PHP Filesystem server 256mb 1 GB APC 64MB 64MB
  • 34. •Boost crea un archivo .html para todas las páginas visitadas por los usuarios anónimos. •El próximo usuario anónimo leerá este archivo .html en vez de ir al index.php y la BD. •Es un excelente caché por archivos estáticos que se ejecuta desde el .htaccess gracias a mod_rewrite.
  • 35.
  • 36. Pensar en performance desde el principio  Performance es un diseño ligero  Pocos módulos (process)  APC Opcode  Consultas Mysql optimizadas (Explain) y Query Cache  Robot.txt (Crawl-Delay: 10)  Usuarios anónimos ◦ Cache del core (solo páginas) ◦ Boost ◦ Varnish ◦ Cache actions (mantenimiento)  Usuarios autenticados ◦ Cache engine APC para Bins importantes y con mucha actualización ◦ Cache engine memcache si cantidad grande de datos ◦ Cache file si no cambia mucho en el tiempo Testing, testing, testing…