29

Por qué Drupal es tan lento.

February 25, 2009

Publicidad / Advertisement

¿Así que quieres saber por qué Drupal es tan lento? ¿Puedes soportar saber la verdad? Porque la verdad es que en sus comienzos Drupal era un rápido y ligero núcleo de funciones que podías usar como un framework,  pero hoy en día es como una fábrica de caramelos de código pesado e hinchado ( traducción libre ?? ).  Todas esas ingeniosas características  tienen un precio y el precio en el caso de Drupal es un exagerado tamaño y como resultado un impacto en el rendimiento. Esto es importante de entender antes de que seas seducido y caigas enamorado por Drupal. Porque todos sabemos que el amor hace todos los defectos tolerables y el objeto de nuestro cariño se convierte en algo más dificil de lo que desprenderse.

Primero, algo de conocimientos básicos sobre cómo funciona PHP. Esto es importante porque Drupal esta basado en un montón de includes, así que una explicación de cómo PHP  se comporta con Drupal es una algo bueno saber de antemano.

something.inc:

<?php
function foo () {
  echo "bar\n";
}
echo "inc\n";
?>

index.php:

<?php
echo "foo\n";
include "something.inc";
foo();
echo "more bar\n";
?>

El motor de PHP hace las siguientes acciones:

Sin los modulos, la carga de ficheros en una página cualquiera de una instalación simple es bastante pesado. Estos archivos son llamados usando la función include() o la función require_once() lo que significa que son parseadas como parte de la carga del archivo index.php en cualquier peticion de la página. Lo que aquí se está mostrando es el impacto de rendimiento debido simplemente al tamaño del archivo . Aquí no se tienen en cuenta los cientos de procesos que han de ser completados durante el parseo de un código PHP.

Veamos los archivos que carga Drupal  y los tamaños aproximados de los ficheros.

bootstrap.inc = 118kb

common.inc  = 36kb

theme.inc, pager.inc, menu.inc, tablesort.inc, file.inc,includes/unicode.inc, image.inc, form.inc, mail.inc, actions.inc = 348kb

Todos estos ficheros suman un total de 502kb que tienen que ser cargados. Recuerda que esto no incluye ninguno de los archivos de módulos que son necesarios cargar para  que funcione el CMS.  También recuerda que cada archivo es analizado por el parseador de PHP dos veces. La primera para el código HTML y luego para PHP.

Para darte una idea de la tensión que esto genera en el servidor, crea un simple fichero PHP de 500 kb. Utiliza un batiburrillo de funciones ( no uses echo ni print ) y pon un timer al  principio y al final , Luego intenta cargarlo con tu navegador.

Ahora , echemos un vistazo a los módulos que son cargados cuando son activados en una instalación por defecto.  Esta lista de modulos sólo comprenden los archivos de módulo y no tienen en cuenta ninguno de los helpers , templates o includes de administracion.

aggregator, block, blog, blogapi, book, color, comment, contact, dblog, filter, forum, help, locale, menu, node, openid, path, php, ping, poll, profile, search, statistics, syslog, system, taxonomy, throttle, tracker, translation, trigger, update, upload, user

Total 894kb

Recuerda que esta lista de módulos no contienen ninguno de los módulos que puedes ser necesarios para tu aplicación. Además es muy complicado reducir esta lista desactivando cosas ya que muchos módulos que no pertenecen al core, son dependientes de los módulos del core.

¿Ya Ejecutaste el fichero PHP de 500Kb ? , Ahora vuelve a intentarlo añadieno 894 Kb (rondando el Megabyte )

En estos momentos, el tamaño totalde fichero cargado es de 1.5 mb, y ni siquiera hemos incluido los archivos de template y ningún extra. La lógica nos avisa de que las cosas no irán más rápido o más eficientes cuando se añadan llamadas al servidor de base de datos, que pueden no estar localizadas en la misma maquina del servidor web.

También se puede tener bastante buena idea de por qué usar un método de caché es tan importante en websites con alto tráfico y por qué 8 mb  de memoria configurada para PHP  no es suficiente para empezar con una instalación de Drupal estándar. Esto pasa a menudo y seguirá pasando más en el futuro.

Antes de que salgas corriendo a buscar el CMS perfecto con otra aplicación puede que quieras revisarlo también. Hazte con una buena explicación de como carga el CMS y luego averigüa el tamaño de esa carga antes de consultas a base de datos y otras cosas que pueden verse implicadas.

No te vayas aún.  Más tarde discutiremos como cargar 287 sentencias mysql a una página y dejar muerto a un servidor compartido. ATENCION: esto no es recomendado para amantes de Drupal, pero ingenieros de aplicaciones web lo encontrarán interesante.

Traducción del post ‘Why Drupal is so slow’ original en inglés encontrado en http://www.hiveminds.co.uk/?p=35353

Publicidad / Advertisement

 

Topics: Desarrollo web, Drupal, Internet, Proyectos Web | 6 Comments »

6 Responses to “Por qué Drupal es tan lento.”

  1. AdrianDev Says:
    July 13th, 2009 at 10:23 pm

    Hola, de verdad drupal es una mierda de lentoo, yo creo que necesita un servidor dedicado de todas formas larga vida a joomla y wordpress !! 😀

    Saludos muy buena traduccion xD

  2. Isra Says:
    November 19th, 2009 at 12:11 am

    Me parece un poco amarillista. Para optimizar la carga de módulos se pueden usar opcode cache, y para las consultas a BD, memcached u otros. El rendimiento de Drupal no es peor que el de Joomla o WordPress, por poner un par de ejemplos.

  3. creacciona Says:
    February 5th, 2010 at 2:20 am

    Los usuarios de Drupal ( usuarios que no programadores ) pensais automáticamente que los problemas de rendimiento se solucionan metiendo caché a tutiplén como si eso resolviera el problema. Barrer los defectos de fábrica debajo de la alfombra no es una solución muy elegante. Recomiendo primero unos conocimientos básicos en programación PHP y algo de teoría de bases de datos relacionales.

  4. hanselito Says:
    June 10th, 2010 at 1:07 am

    Se que le echan muhco a drupal pero la verdad no es para tanto drupal se ha forjado un lugar en la web como CMS que muchos no lo han logrado, he visto foros de joomla y drupal donde felicitan a drupal por haber sido elegido ne paginas importates como la del gobierno de USA y de francia creo que estan exagerando demasiado y haciendole mala fama es todo

  5. gerar Says:
    August 16th, 2010 at 2:56 am

    creacciona
    Los usuarios de Drupal ( usuarios que no programadores )

    Y es que tu eres algun tipo de programador que entiende los core de los cms a fondo????
    si trbajas con Joomla me imagino que has de concer su manejo para la personalización de modulos o no??
    🙂

  6. gerar Says:
    August 16th, 2010 at 3:00 am

    aunque de cierto es que drupal se la pasa de lento una vez que la recargas demodulos,,,
    Tampoco niego ese hecho, es una verdad absluta, lo cierto es que joomla o wordpress tampoco son mejores en cuanto a rendimiento total.
    En todo caso te combiene trabajar sin un cms, pero hasta allí a casi todo mundo le da cojona llegar, mas cuando tienes que integrar interfaces en ajax, diferentes tipos de formularios etc etc.
    asi es que no es que drupal sea lenta, ya le diste una ojeadita al core de wp para darse una idea….

Comments