Como ayer comenté, a veces las decisiones de actualizar software y tal quizá no sean las mejores, aunque lo flipante es que una gilipollez consiga tirarte una máquina y llevar locos a los técnicos de un ISP.
Estos días ando ayudando a migrar un proyecto que estaba antes en HTML con PHP que llamaba y tal, y que ya era ingestionable, y decidimos pasarlo a SQL, recuperando del HTML la información importante y como CMS decidimos utilizar WordPress.
El problema nos lo hemos encontrado al tener más de 21.000 posts y una base de datos que ocupa más de 250 megas. La cuestión es que no tenía sentido que se cayera cada dos por tres el servidor, el Apache, el mySQL y todo en reacción en cadena… Al final, más movimientos han hecho que los del ISP se quejen diciendo que se había jodido la máquina…
Total, al final, como el tema estaba en que había muchas «query_slow» he pedido que activen el log y me he puesto a mirar que era… y la solución ha sido una de las mayores tonterías del mundo… algo que ha hecho que una máquina con 4 procesadores que iba al 95% de media antes haya pasado a un 50% de CPU, y que los 2 GB de memoria que estaba antes al 98% ocupados hayan quedado al 60%.
¿Cómo es posible que un campo de la base de datos de WordPress con el que se ordenan cientos de consultas no esté indexada? Pues sí, ha sido mano de santo.
Tan sólo hay que ejecutar esto en el SQL y se solucionan algunos problemas, sin que afecte a la configuración inicial de WordPress. Por cierto, cuidado con el «prefijo» de la tabla, que según como lo hayáis dado de alta puede o no ser el mismo.
ALTER TABLE wp_posts ADD INDEX (post_date)
En fin, si alguien que utiliza o desarrolla WordPress me puede decir porqué eso no está indexado, se lo agradecería enormemente… porque estoy pensando en avisar para que se incluya de serie… porque en grandes cantidades de información esto muere. Básicamente es que el «listar entradas» del panel, hace un ORDER BY post_date
…
Deja una respuesta