
Hace tiempo que programé un sistema para servir medios publicitarios online a diversas webs y blogs. Si bien al principio no tuvimos problemas, hace semanas el tráfico del script que sirve la publicidad se ha visto cuadruplicado, llegando a las 5.000.000 de impresiones diarias, ésto dejó al servidor mysql al borde del colapso total con un 99% de uso de CPU.
¿Cómo lo solucioné?.
Primer intento: fracaso total.
Traté de migrar la BBDD a un nuevo servidor (estaba alojada en el mismo servidor que la web), y el resultado fué aún peor, el sistema dejaba de responder completamente, era peor el remedio que la enfermedad.
Segundo intento: éxito.
Volví al punto de partida, y tras un rápido análisis con MyTop (utilidad recomenda al 100%) descubrí que había cientos de INSERT DELAYED correspondientes a las estadístias esperando ser realizados (por tanto, activos en memoria), ésto estaba causando un inmenso overhead.
¿Cuál fué la solución?, quitar el DELAYED y realizar inserts normales, a partir de ese momento, el uso de CPU no ha subido en ningún momento del 5%, increible pero cierto.
Así que, bajo mi experiencia personal concluyo que el INSERT DELAYED no sirve para nada, al menos en MySQL.
Comentarios recientes