WordPress y uso de CPU: algunas lecciones

Hace unos días escribía sobre el problema que Boja tenía con la sobrecarga de CPU que WordPress le estaba causando en su host. Desde su publicación, fueron muchos quienes aportaron con sus sugerencias para solucionar este problema, ya sea a través de comentarios o bien posts sobre el tema, y entre todos se ha creado una nueva base de conocimiento que antes no existía sobre la optimización del funcionamiento de WordPress en cuanto a su consumo de procesamiento, de la cual intentaré destacar algunos de sus puntos más importantes.

Los weblogs conversan sobre el tema

Sí, los weblogs son conversaciones y en esta caso quedó más que demostrado. Primero que nada, un listado de los weblogs que escribieron sobre el tema:

  1. En primer lugar, el mismo afectado escribió sobre la sobrecarga de CPU en DreamHost
  2. Luego, Diego Lafuente se preguntaba si si DreamHost era el problema, recordando la oportunidad en la que le pasó lo mismo
  3. Yo mismo escribí un artículo que ampliaba un comentario al post de Diego
  4. Marcos Sader reportó que también tenía el mismo problema, y en un comentario a este post alguien recordó que a Mariano Amartino también le había sucedido lo mismo, pero que lo había solucionado instalando WP-Cache 2, el plugin de Ricardo Galli
  5. Davilac escribió sobre su experiencia con DreamHost
  6. En Vida Vacía se planteaba el problema de ser popular en la blogósfera
  7. En Vida Blog recordaban que esto había sucedido anteriormente, también a Manuel Almeida, quien en su momento se preguntaba si esto se debía a un misterio en el hosting (que en este caso no era DreamHost) o ataques contra WordPress
  8. En el blog de WordPress en Bitacoras.com, se escribía cómo poner a WordPres a régimen de ejercicios
  9. Ricardo Galli lee el post inicial de Boja y aporta un dato fundamental: el problema podría residir en que PHP estaba configurado para ejecutarse como módulo CGI
  10. Boja intentó esta solución y le dio excelentes resultados
  11. Marcos Sader aportó sus propias sugerencias para solucionar el problema

Síntesis de las lecciones

  • Dado que WordPress trabaja con PHP y MySQL, cada vez que necesitamos ver una página debe consultar la base de datos y generar el XHTML para nuestro navegador. WP-Cache es un plugin que reduce este trabajo generando copias estáticas al solicitar una página
  • Los plugins generan una carga extra de trabajo, sobre todo aquellos filtros para el texto que escribimos, tales como Textile o los que generan muchas consultas a la base de datos, como Brian’s Latest Comments
  • Con el uso, las bases de datos comienzan a retener información que no es necesaria, lo que hace que se necesite trabajo extra para obtener los datos que requerimos. Para evitar esta situación existe la posibilidad de optimización, la cual es una tarea muy sencilla con phpMyAdmin, el administrador más común para bases MySQL, seguramente disponible en tu servicio de alojamiento web
  • PHP puede funcionar como un módulo de Apache o como CGI. Esta última opción implica mucho más esfuerzo del servidor, por lo que es recomendable elegir la ejecución como módulo de Apache
  • Existen temas para WordPress que son muy simples, hay otros que son muy complejos. Si quieres mantener el consumo de CPU bajo, es mejor quedarse con lo más sencillo
  • Hay algunas tareas que pueden ser traspasadas a otros servidores, en especial en lo referente a servir los canales de sindicación a través de FeedBurner, para lo cual existe un plugin que permite facilitar esta tarea, aunque también se puede hacer sin él. De esta manera, tu feed no será solicitado a tu servidor, sino al de este servicio
  • Finalmente, existe también LighPress, un backend para WordPress, que tiene como fin acelerar el trabajo de muchos de los procesos de acceso a la base de datos y de generación de los temas, a fin de reducir el trabajo en el servidor. Aunque no es totalmente compatible con WordPress, te puede servir como una alternativa para reducir el consumo de CPU