Nuevo sitio en Drupal para el periódico Los Tiempos

KarimB's picture

He desarrollado hace un más de un año el sitio lostiempos.com sin Drupal porque no tenía una clara idea de las capacidades de Drupal en cuanto a poder servir más de 40 000 visitas día y 350 000 páginas vistas día.

Pero durante este año he podido investigar a fondo el sistema de caching de Drupal (Boost, memcache en particular) y he decidido lanzar una primera prueba con Drupal para la comunidad virtual del periódico (http://conectados.lostiempos.com), como sub dominio.

Si veo que la configuración de Drupal nos permite servir a los 10 000 visitas día esperadas en el mismo server sin problemas con la BD Mysql , los 4GB de memoria y sin interferir con el mismo sitio alojado en el mismo servidor, iremos avanzando con esta tecnología en el futuro.

Los dos grandes desafíos eran:

  1. Registro asincrónico de los usuarios del sitio actual con los usuarios de Drupal. Para ello, en el sitio principal, Sandi ha desarrollado un módulo que registra los datos de los nuevos usuarios en los dos sistemas. Simple pero eficiente. Es decir que cuando un usuario se registra en el sitio principal, sus datos están grabados en el sitio Drupal al mismo tiempo. Pero es solo en este sentido hasta ahora.

  2. Optimizar Drupal para las 10 000 visitas día en el mismo server. Para ello he realizado las siguientes operaciones:

  • Optimización de los queries de Views2
  • Views2 Caching. Cache de los bloques y páginas generados por Views
  • No activar el cache del core de Drupal pero utilizar en su reemplazo el módulo Boost para los usuarios no registrados
  • Utilizar el memcache API para los usuarios registrados en un solo bin pero distinto de los bins del servidor principal
  • Poner el registro de las sesiones en memcache en vez de en la misma BD

Espero que estas pruebas serán concluyentyes y que podremos seguir desarrollando sitios de gran afluencia con Drupal.

Hagan la prueba (http://conectados.lostiempos.com/) y espero sus comentarios.

Saludos a todos los drupaleros.

Karim

Grupos:
Login or register to post comments

Saludos...

kaasi's picture
kaasi - Vie, 2010-03-05 20:19

Saludos Me parecio un website muy potente y atractivo, te felicito!!!

Todabia sigo viendo que funcionalidades tiene y viendo mas el sitio... me parece muy bien solo que me salio el siguiente error:

warning: Invalid argument supplied for foreach() in /home/frontend/public_html/yoparticipo/sites/all/modules/cck/content.module on line 1284.

en esta seccion: http://conectados.lostiempos.com/fotos-sociales/noches

q tengas exito!


Gracias

KarimB's picture
KarimB - Vie, 2010-03-05 20:49

Gracias kaasi. Era un antiguo termino de la taxonomia que no había borrado. Ya está hecho.

Saludos


Excelente...

kaasi's picture
kaasi - Vie, 2010-03-05 22:12

Me parece muy bien tu sitio!! Me inspira :D :D bueno voy a esperar a ver como te fue con los modulos para el trafico alto :)

esta muy bonito ^.^ :D


Esta muy bueno el

xjkwak's picture
xjkwak - Vie, 2010-03-05 20:56

Esta muy bueno el sitio.

Drupal si que es poderoso y con tu ejemplo lo demuestras... Gracias KarimB.


A ver...

KarimB's picture
KarimB - Vie, 2010-03-05 21:06

Gracias xjkwak.

Definitivamente, Drupal es poderoso pero en el caso de lostiempos.com, veremos si su sistema de cache (Boost y memcache) permite servir un alto tráfico en un solo servidor con 4GB de memoria sin montar un sin fin de estrategias (CDN, master-slave, load balancing, clouding...) que al final son bastante costosas para nuestro medio.

Si la prueba es positiva, pensamos montar más sitios de alto tráfico para medios on-line con nuestro CMS preferido: Drupal por supuesto!!!

Saludos


Aunque no viene al caso

marcunix - Jue, 2011-11-10 11:32

Hola KarimB, perdona que te pregunta algo que no viene al caso, soy nuevo aquí y en Drupal, aunque usuario de Joomla, y quiero migrar a Drupal para trabajar sobre multisites en un periodico local ya existente, busco algo parecido al template que usas en lostiempos.com, ¿podrías indicarme si se trata de un template de pago o propio?

Busco algo como eso, como elpais.com.co , o elespectador.com ya que es lo que mas se asemeja a mi sitio .

Gracias


Pressflow

develCuy's picture
develCuy - Sáb, 2010-03-06 14:15

@KarimB, me llama la atención si has revisado Pressflow. Y también lo que dices sobre la infraestructura limitada. Drupal es muy poderoso y flexible, pero el costo es que necesita más memoria que un CMS PHP promedio. Aunque, si lo comparas con otros sistemas diseñados para alto tráfico, llamese sharepoint, tridion, etc, Drupal es una pluma!!! Si quieres escalar me parece muy bien que busques mejorar el performance de Drupal, pero tal vez sea tiempo de pensar en Load Balancers y Database clustering.

--
¡ Soy un drupalero latino !
Dear friend, I pray that you may enjoy good health and that all may go well with you, even as your soul is getting along well (3 John 1:2)


Pressflow

KarimB's picture
KarimB - Sáb, 2010-03-06 15:51

La verdad es que desde el inicio me llamó la atención pero no me gustan muchos los enlatados. Pero si tienes experiencia con pressflow me gustaría compartirla.

Mi intención es de avanzar paso a paso, entendiendo lo más que puedo la arquitectura de Drupal. Por ello pensaba seguir con memcache y poco a poco avanzar sobre los siguientes puntos:

  1. Memcache for sessions ? (http://www.hyperionreactor.net/blog/storing-drupal-sessions-memcache) pero tengo serias dudas vea: http://dormando.livejournal.com/495593.html

  2. Memcache path (http://drupal.org/project/pathcache)

  3. No Anonymous Sessions (http://drupal.org/project/no_anon)

  4. Authcache (http://drupal.org/project/authcache)

Una vez probados estos puntos pienso ir por cache router (que me parece más un integrador de estrategias de caching) (http://drupal.org/project/cacherouter), probar varnish (http://drupal.org/project/varnish) y mercury (http://drupal.org/node/570506)...

Que te parece o piensas que existe un otro camino?

Saludos


Graciar por compartir tu

frecaze's picture
frecaze - Sáb, 2010-03-06 15:54

Graciar por compartir tu experiencia con Drupal... :) A mi me ha ayudado mucho...

Ojala nos sigas compartiendo como se comporta Drupal y los cambios que vas a seguir implementando en (http://conectados.lostiempos.com/) :)

Esta muy bueno el sitio, y es bastante rápido :)

Freddy Cahuas :)


Gracias

KarimB's picture
KarimB - Sáb, 2010-03-06 16:06

Espero poder seguir aportando a la comunidad, estoy convencido que hay más en el cerebro de 10 000 drupaleros que en el mejor de los departamentos I+D de la Silicon Valley. :)

Esperaremos el lunes a la mañana aver como se comporta Drupal con la afluencia de los usuarios de semana.

Saludos


Recomendaciones grales

sergiochavez's picture
sergiochavez - Sáb, 2010-03-06 17:15

Karim,

Como hablamos la anterior semana, es un tema en el cual hay que considerar varios temas y la mejor respuesta a dar seria: depende de ..

* Cuántos  modulos y qué módulos tienes en tu sitio?
* El trafico principalmente es de usarios anomimos o autenticados ?
* Cuál es tipo de hardware que tienes?
* Cuál es la configuracion de software que tienes?

Yo sugerira empezar por :

a) No sobrecargar c/pagina con bloques que suponen muchas visitas a la BD y que aportan poca información.
b) Pudes utilizar Ajax o Jquery cuando puedas y te va ayudar en el tema de refrescar la pantalla por lo que tendras menos consumo de CPU y menos consultas a la BD.
c) Puedes Activar la cache de Drupal y tendras 3 cosas
* Compresión de páginas
* Cache de bloques
* Cache de ficheros css y js. ( como generalmente no cambian , no se utilzan en cada visita , solo en la 1ra vista de cada cliente)

Generalmente el tráfico de sitio se base en 2 tipos de usuarios anonimos y autenticados.
Para anonimos, puedes ver
http://drupal.org/project/boost

La cache de drupal se almacena en la BD, con lo cual, si tienes un # elevado de visitas, se puede producir un cuello de botella en la BD. con este módulo lo que haces es crear un fichero .html con la página que generes y se modifica el fichero .htaccess para que la consulta a una página muestre directamente el fichero .html sin hacer ninguna consulta a base de datos.

Para Autenticados, no se puede mostrar la misma página a cada visitante , por lo que te recomendaria que le des una mirada a

  1. http://drupal.org/project/blockcache_alter
    Con esto puedes configurar que bloques quieres que se muestren a todos los usuarios que son iguales para ellos y que bloques deben generarse para cada usuario. asi podras optimizar las consultas a la BD.
  2. http://drupal.org/project/authcache
    este modulo te sirve tambien para los usuarios anonimos, pero se usa mas con los autenticados, con este módulo puedes realizar un cache a la BD a nivel de usuario y/o rol, y que te permite mejorar el tiempo de respuesta para mostrar una pagina , ya que puedes determinar si la pagina esta siendo vista por un el mismo usuario o rol.

Ya entrando al tema de hardware y software es un tema extenso y para intercambiar varias puntos de vistas y diferentes situaciones.
Quizas podrias empezar a ver ver el tema de
op-code cache/aceleradores, hay alternativas como:
http://pecl.php.net/package/APC
http://eaccelerator.net/
http://xcache.lighttpd.net/

Creo que este enlace te sera muy util.
http://nadeausoftware.com/articles/2009/11/speed_drupal_web_site_preload...

Bueno espero que te ayude la info y estamos hablando la semana que viene.


Detalles

KarimB's picture
KarimB - Sáb, 2010-03-06 21:51

Gracias por tus recomendaciones Sergio, veo que la comunidad en Bolivia se está activando… que bien.

Op-cache: e-accelerator
Como tú lo recomiendas, y haré le mismo, es siempre mejor utilizar un op-code cache. Para ello, personalmente trabajo, por costumbre tal vez, siempre con e-accelerator. No conozco bien APC, pero e-accelerator me da buenos resultados… hasta ahora… :)

Estrategias de cache

Usuarios en general: Optimizar los queries de Views y cachear directamente desde Views
Antes de cachear cualquier cosa, siempre optimizo las consultas generadas por views… Es un dolor de cabeza, pero vale la pena sobre todo creando índices sobre los campos del “where” cuando no existen. No sabes lo que se gana con esto… increíble.

Estoy cacheando los bloques y las páginas generados por views2 directamente en views. Además no solamente el query result pero también el output del html de views. Para este sitio, he puesto el cache life time en 1 hora visto que el contenido está moderado por el equipo del periódico y lo hacen cada 30 minutos.

Usuarios no authenticados: Solo boost sin el cache del core de Drupal
Allí discrepo un poco contigo. Prefiero utilizar solamente el módulo boost () y no activar el cache del core Drupal. Visto que boost crea los archivos planos para las páginas, porque ponerlos también en la tabla cache_page? Así me ahoro consultas de escrituras a la BD.

Usuarios authenticados: Memcache API
Utilizo el memacache API . Es increíble como este pequeño módulo nos permite ahorrar consultas a la BD. En este caso he creado una nueva instancia de memcached, solo para este sub dominio, con 128Mb. Así dejo las otras instancias (con 512 Mb) intactas para el resto del portal. Como estoy en una instalación multisitios, en el conf de settings he puesto un prefijo para que cada sitio de la instalación multisitios pueda utilizar sus propias keys del memecache sin colisión.

Al principio estaba también poniendo las sesiones en el memcache, pero tengo dudas sobre todo cuando hay un fallo o una evicción en el memcached mismo. Así que la retiré. A ver si alguien ha tenido buenos resultados con esto. Aquí va el conf del memcache en settings:

$conf = array(
     'cache_inc' => './sites/all/modules/memcache/memcache.db.inc',
  'memcache_key_prefix' => 'lt_conectados',
   'memcache_servers' => array('[server]:[port]' => 'default'),
);
Reemplazar [server] por la IP de su servidor de memcache o localhost si está en el mismo servidor. [port] es el puerto de la instancia de memcached que van a utilizar, 11211, 11212…

Allí tengo una duda sin no hay que poner además los bins 'memcache_servers' => array([server]:[port]' => 'default'),
Pero como utilizo solo una instancia me parece redundante. Alguien tiene una idea?

Estoy utilizando 'cache_inc' => './sites/all/modules/memcache/memcache.db.inc', en vez de 'cache_inc' => './sites/all/modules/memcache/memcache.inc', porque tengo dudas todavía y en caso de fallo de memcached prefiero que vaya a la BD. Pero haré una prueba esta noche.

Ven que en este caso solo tengo una instancia y pongo todo en esta misma instancia. Mi intención en el futuro es de poner al menos dos instancias, una para el bin cache_views_data (visto que cacheo mucho las views) y una otra para el resto. Que les parece?

Todavía no he probado otras estrategias como lo indicaba en http://groups.drupal.org/node/54093#comment-150498, pero estoy probando de poco a poco.

Saludos y hablamos esta semana.


Valiosa información @KarimB,

develCuy's picture
develCuy - Jue, 2010-03-18 19:06

Valiosa información @KarimB, gracias por compartirla

--
¡ Soy un drupalero latino !
Dear friend, I pray that you may enjoy good health and that all may go well with you, even as your soul is getting along well (3 John 1:2)


por fin alo en español k medio entiendo...

ikiam's picture
ikiam - Mié, 2010-04-21 02:36

Mi Pagina es muy simple,,,
http://mioplanet.org/

pero bueno,,k se yo,, esta muy lenta... estoy en la tarea de mejorar el tiempo de Carga...

La verdad no se naa de Php ni de estas cosas,, algo algo voy aprendiendo lo k es Drupal,,, manejo basico de Bases de Datos, Html,,, pero leyendo un poco parece ser k el modulo

Boost es una buena opción,,, pero tiende a presentar algunos fallos presentando información intercambiada entre lo k les deberia salir a los Us.. registrados y los us... anonimos,,,
Leyendo tambien encontre

Authcache que hasta ahora me parece una de las mejores opciones... creo k este module tambien te comprime en gzip los html pero no los css ni los js,, o como es esto, alguien sabe?

MemCache creo k necesita algunos rekisitos especiales y cosas para instalar en el server,, k en mi hosting compartido y barato no creo k se pueda o no se...

@KarimB, leo mucho sobre cache de los blokes genrados con Views, puedes darme una idea "sencilla" de como hacer eso?

Gracias,, saludos.


Boost ??

iorgos - Mié, 2010-04-21 03:35

Los sitios drupal están preparados para cargar rápidamente y antender a mucha gente. Lo único que necesitas es habilitar el cache en modo normal y listo.
Ahora, si tienes muchas visitas concurrentes es probable que necesites hacer algun truco.

Saludos!


Gracias iorgos

ikiam's picture
ikiam - Mié, 2010-04-21 04:37

pero nose,, imagino k si existen tantas paginas y módulos dedicados a tratar de mejorar el performance de Drupal,, por algo sera....

en mi caso,,, si kieres entra a mi pagina,, y dime como te va el tiempo de carga?
http://mioplanet.org/

te agradeceria mucho,,, en todo caso a mi me parece excesivo,, solo el html sin nada,, pesa alrededor de 80 a 150 kbytes lo k me parece demasiado,,, ahora con carga de css, js, imagenes, iframes, etc,, son como 1.2 Mbytes lo k tiene k cargar k con el cache basico de drupal para usuarios anonimos baja a 300 kbytes aprox. para mi eso es demasiado, PERO DEMASIADO, veo paginas tipo Amazon,,, k tienen cualkier cantidad de graficos y de todo y no demoran en cargar nada...

Estoy tratando de ver por ahora como comprimir en Gzip todo,, o al menos creo k los html, css y js...

Lei algunos articulos k dicen k el metodo de compresion basico de drupal comprime solo la pagina html,, o lo k sea,, mas no,,, los js ni css... Sin mebargo moneando con el Yslow veo k la pagina html tampoco me sale comprimida, esta en la lista de recomendaciones de archivos a comprimir,,, entonces no se como hacerlo? Css Jzip parece k comprime css y js, Authcache parece k comprime los html...

O sera mejor hacerlo con Mod_deflate?

Bueno,, tengo un mundo de dudas,, con probar y dañar,, supongo las solucionare,, pero si alguien tiene consejos,, los acepto... gracias