Gravatar de Armonth

4+1 maneras de mejorar la velocidad de WordPress

Arne Brachhold ha escrito 4+1 Ways To Speed Up WordPress y aprovecho para resumir lo que dice y ampliarlo en algún punto:

Velocimetro

  1. Activar el MySQL Query Cache. Lo único que tenemos que hacer es buscar el fichero de configuración de MySQL (my.cnf o my.ini) y poner la variable query_cache_type a 1. Luego podemos aprovechar para fijar un tamaño máximo del cache en la variable query-cache-size por ejemplo poniendo 20M (20 megabytes).
  2. Usar cache de compilación de PHP. Toca recordar que PHP es un lenguaje de script, cada vez que tiene que servir una página tiene que ejecutar el código usando su interprete. Existen soluciones para mantener cacheado el script de tal forma que no tenga que pasar por el interprete tales como APC o eAccelerator.
  3. Activar la cache interna de WordPress. (Ojo: NO tiene que ver con WP-Cache). En caso de un servidor MySQL lento, puede ser una buena idea guardar datos frecuentemente usados en el disco duro. WordPress tiene un cache en disco integrado que guarda información que rara vez varía como las categorías o los usuarios en un directorio en particular.

    Advertir que esta cache no es recomendada si el disco es lento o tu hosting usa NFS como solución de almacenamiento (cómo hace Dreamhost) ya que puede estar pidiendo los datos cacheados desde un servidor de almacenamiento remoto.

    El cache interno se activa en el wp-config.php descomentando o añadiendo: define(’ENABLE_CACHE’, true); y revisando que el directorio wp-content/cache tiene permisos de escritura.

    Hint: En su momento Ricardo Galli y yo hablamos sobre el tema de NFS y comentar que si usas NFS (ie: usas Dreamhost) puede ser interesante guardar los ficheros cacheados en /tmp (el directorio donde guardar los ficheros cacheados es configurable) ya que accede mucho más rápidamente a la cache en /tmp (que está como ext3) que no en un directorio dentro de un NFS. Yo todavía no lo he probado pero no creo que dé ningún problema.

  4. Páginas estáticas. Usar WP-Cache, nada nuevo, solamente añadir un enlace a un post de Mark Jaquith que explica cómo combinar APC+WP-Cache sin conflictos.
  5. Y por supuesto….

    • Usar WordPress 2.1. Ya comenté en su momento que tiene muchas mejoras en rendimiento, especialmente útil si usas la cache de MySQL.
    • Desactiva plugins no usados. O desactiva aquellos plugins que puedas sustituir por funciones incorporadas al código base de WordPress.
    • Optimiza tu plantilla. Especialmente el exceso de peticiones HTTP (número de objetos, imágenes, ficheros a descargar, etcétera). Paul Stamatiou tiene más consejos que darte.

Entradas de SigT relacionadas

21 Comentarios (feed)

  1. Gravatar de maty maty nos comenta:

    Y… no sobrecargar la bitácora con plugins y plugins, imágenes sin optimizar…

    Cambiar el theme de administración por el spotmilk 1.7.2

    Y, tener una hoja de estilos optimizada, digo.

    Acabo de actualizar la bitácora de Quiñonero Una temporada en el infierno a WP 2.0.8. Sólo son unos pocos ficheros nuevos, revisados por cuestiones de seguridad.

    De todos los plugins que he ido probando, sólo están activos:

    Akismet 2 y Spam Karma 2.2 r3 para filtrar el spam. No están sincronizados, no noté mejora alguna.

    Spotmillk 1.7.2 para el panel de administración.

    Get Recent Comments, para que aparezcan los últimos comentarios en el lateral.

    ***********************

    WP-cache siempre me ha dado problemas. Tal vez sea por el uso del PHP 5.* La última versión no la he probado.

    Comment Quicktags, plugin descatalogado, para enriquecer los comentarios (negrita, cursiva). Causa un excesivo consumo de memoria, de ahí que tuviese que deshabilitarlo.

    Sábado, 17 de Febrero/2007 @ 11:21

  2. Gravatar de maty maty nos comenta:

    He subido dos imágenes de la sección plugins en el panel de administración. Inicialmente, pesaban 35KB cada una, pero tras optimizarlas, sólo 21KB. Como son capturas de pantalla y no fotografías, formato PNG.

    Captura 1

    Captura 2

    Sábado, 17 de Febrero/2007 @ 11:33

  3. Gravatar de maty maty nos comenta:

    Siempre igual, pongo dos enlaces y comentario a moderación. Pues eso.

    Sábado, 17 de Febrero/2007 @ 11:34

  4. Gravatar de Armonth Armonth nos comenta:

    Relax maty, que reviso la moderación tropecientas veces al día… :D

    Sábado, 17 de Febrero/2007 @ 11:49

  5. Gravatar de maty maty nos comenta:

    Es que me sucede continuamente en multitud de sitios. Así se penaliza a los comentaristas que enriqucen los comentarios. Subiendo el límite a 2 enlaces no es tanto problema, digo.

    También es utilísimo instalar el spamkarma 2. Si en poco tiempo, el mismo comentarista quiere seguir haciéndolo, aparece un pequeño captcha. Bueno, y muchísimas cosas más. Confiad en mí e instaladlo. Además, los spammer se centran en Akismet, así que cuando encuentran una vulnerabilidad, está el otro para pararlos.

    Cuando lo sincronicé con Akismet, Quiño dejó de recibir los avisos por correo, de ahí que volviese a la situación anterior. Desincronicé y problema solucionado. En cualquier caso, no noté diferencia alguna de rendimiento.

    Y GRACIAS por ser tan rápido.

    Sábado, 17 de Febrero/2007 @ 11:57

  6. Gravatar de Armonth Armonth nos comenta:

    Es que el límite por defecto de todos los blogs es de 2 enlaces, pero ten en cuenta que el del campo “URL” también debe contar…

    Y sobre spam karma, no dudo de su fiabilidad pero ya he dicho en anteriores ocasiones que algunos servicios (como los feeds) me niego a dejarlos en manos de servicios de terceros (ej: Feedburner) pero otros no me apetece que sean un gasto de CPU (ej: filtrar el spam)…

    La única razón para usar akismet en lugar de spamkarma es que el grueso del trabajo se lo come otro y no yo :P

    Sábado, 17 de Febrero/2007 @ 12:14

  7. Gravatar de InKiLiNo InKiLiNo nos comenta:

    Muy bueno pero llegas tarde lo lei ayer :P

    Sábado, 17 de Febrero/2007 @ 12:52

  8. Gravatar de maty maty nos comenta:

    A priori, tienes razón, pero… resulta que la mayor parte del trabajo la realiza primero Akismet, por eso parece que el SpamKarma sea poco efectivo, al filtrar un número mucho mayor. No creo que consuma demasiada CPU, habría que investigarlo.

    UTI
    nunca ha tenido problema de CPU, sólo de memoria, a causa del plugin Comment Quicktags (una verdadera lástima).

    En Európolis, bajo b2evolution 1.9.2 (el mejor CMS propiamente bitacoril -y es multibitácora), sí que hubo problemas con la CPU, cortados de raíz una vez que instalé el Captcha Image.

    La solución más efectiva para combatir el spam:

    Instalar un captcha, habilitar vista previa o insertar un pequeño formulario. Es decir, cualquier cosa que requiera una decisión adicional.

    El problema viene con los trackbacks, que han de ser manuales. En Európolis, gracias al plugin anterior, también tiene un captcha para poder visualizarlo, pero entonces el trackback es manual y no automático. No se puede tener todo.

    Nota: para cosas más ambiciosas, Joomla! (lo prefiero a Drupal, que también está muy bien). Ambos pueden tener un aspecto bitacoril.

    Nota 2: ahora estoy toqueteando Blogger, exprimiendo al máximo sus posibilidades. Me está sorprendiendo.

    Sábado, 17 de Febrero/2007 @ 13:23

  9. Gravatar de Armonth Armonth nos comenta:

    Inki pues vale y yo tmb, xD como si esto fuera una competición aunque lo del truco de poner la cache en tmp no sé yo si lo has leído antes :)

    Maty a mí b2evolution no me gusta nada aún teniendo con el WP el mismo padre (b2b)… y sí la más eficaz es un captcha pero también la menos usable…

    Sábado, 17 de Febrero/2007 @ 14:43

  10. Gravatar de Reboot Reboot nos comenta:

    Tengo una duda… ¿los parámetros query_cache_type y query-cache-size desde qué versión de mySQL funcionan? Porque lo acabo de meter en mi servidor y me está dando exactamente los mismos tiempos.

    Sábado, 17 de Febrero/2007 @ 21:28

  11. Gravatar de Armonth Armonth nos comenta:

    Reboot ¿cómo lo compruebas? (lo de Dynamic page served cuenta tiempo de CPU incluyendo las esperas en idle, no es de fiar) aunque a mí en mysql 5.x me viene activado por defecto

    Sábado, 17 de Febrero/2007 @ 21:51

  12. Gravatar de Reboot Reboot nos comenta:

    Lo compuebo haciendo una query tocha y midiendo el tiempo. Tengo una página concreta en mi CMS que puede tardar entre 2 y 3 minutos que cruza varias tablas y que aún no la tengo bien optimizada (vaya, que me falta un índice) y justo se lo iba a meter cuando leí lo del query cache. Estuve probando, pero nada, sigue tardando lo mismo +-0′100 sg.

    La versión que rulo es una 3.23.x

    Martes, 20 de Febrero/2007 @ 10:53

  13. Gravatar de Armonth Armonth nos comenta:

    Pues según creo la opción se empezó a implementar en mysql 4.x, una rápida búsqueda:

    Blackshell:

    Desde MySQL 4.0.1, este SGBD dispone de una query cache que se encarga de guardar la cadena de texto de una petición junto con su respuesta para acceder a ella posteriormente, sin volver a analizar la sentencia SQL y ejecutarla, con el consiguiente aumento de velocidad.

    En su ejemplo, la mejora (usando Apache Benchmark) pasa de 12 peticiones/segundo a 20 y con un poco más de optimización a 28.

    Luego, sacado de la documentación oficial de MySQL 5.x:

    Searches for a single row in a single-row table are 238% faster with the query cache than without it. This can be regarded as close to the minimum speedup to be expected for a query that is cached.

    Hay que tener en cuenta que la cache de MySQL cuando es más óptima es cuando hay pocas modificaciones y muchas consultas, yo una vez pude ver la infraestructura de una web de gran carga — ahora ya desaparecida — que usando MySQL 4.01 como lo más de lo más moderno tenía un servidor MySQL para modificar la BBDD que era volcada a otro sitio que es desde donde se sacaban los datos en las consultas (usaban cuatro servidores, cache de PHP, cache de páginas estáticas, cache de MySQL y redundancia… una pasada por aquel entonces :D).

    Martes, 20 de Febrero/2007 @ 13:42

  14. Gravatar de Linker - Pixmedial Linker - Pixmedial nos comenta:

    Me interesa pero no hay problema que el servidor lo tome como uso execivo de recursos de mysql y php ya me han suspendido 3 veces la cuenta por utilizar recursos, alguna solucion

    http://www.pixmedial.net/blog/que-hacer-cuando-suspenden-tu-web-por-uso-execivos-de-recursos

    saludos

    Jueves, 22 de Febrero/2007 @ 2:52

  15. Gravatar de InKiLiNo InKiLiNo nos comenta:

    Hi,

    estaba intentando activar el cache query de MySQL en dreamhost, por fin puedo acceder via shell, y al poner la orden, me dice que no tengo privilegios de superusuario, y no me deja hacer ni su ni sudo, como lo pusiste tú?

    Te adjunto una impresion del terminal:
    mysql> set global query_cache_size = 10*1024*1024;
    ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation

    Jueves, 8 de Marzo/2007 @ 10:11

  16. Gravatar de Reboot Reboot nos comenta:

    Acabo de migrar a la versión 4 de mysql y todo son ventajas Hoyga. Va mucho más rápido (del orden de un 15~20%) gasta menos memoria con la configuración de workstation (que es la que uso para la web, ya me dirás, con 100 y algo visitas diarias no necesito más) y me quito un directorio más del raíz, que era donde tenía la versión 3.x, y un problema de mantenimiento, pues la versión 3 está abandonada desde hace un par de años.

    Sólo he tenido que arreglar un pequeño problema con cómo se comparan los campos de fechas (0000-00-00 0000:00 ya no equivale a “”) y un temita de encriptación de passwords cuya solución he encontrado aquí:

    http://www.ignside.net/man/mysql/problemas41.php

    Ufff, qué ganas tenía de dar este paso.

    Martes, 10 de Abril/2007 @ 12:38

  17. Gravatar de sergio sergio nos comenta:

    Hola, disculpen la intromisión, pero veo que entienden mucho sobre el tema. Alguno conoce un plugin que permite utilizar wordpress como administrador de contenidos, peero presentar el frontend como un portal mas tradicional?? en lugar de la home de post debajo de post…
    Disculpen si es off topic es que me pasé días buscando esto y no se donde consultarlo.

    Muchas gracias a todos

    Miércoles, 18 de Abril/2007 @ 22:30

  18. Gravatar de Armonth Armonth nos comenta:

    no hace falta plugins sergio, creas la plantilla/theme a tu gusto y listo…

    Miércoles, 18 de Abril/2007 @ 22:55

  19. Gravatar de sergio sergio nos comenta:

    Ok Armonth, muchas gracias por la respuesta.
    Conoces algún sitio que lo esté haaciendo? Que utilice wordpress como backend pero tenga apariencia de portal?

    Viernes, 20 de Abril/2007 @ 18:39

  20. Gravatar de Armonth Armonth nos comenta:

    Pues la verdad es que no sergio, pero todo es ponerse, buscar por “WordPress themes” en google y ver si hay algo que te convezca para adaptarlo.

    Viernes, 20 de Abril/2007 @ 19:01

  21. Gravatar de sergio sergio nos comenta:

    Muchas gracias Armonth

    Miércoles, 2 de Mayo/2007 @ 21:41

Comentarios cerrados