Mysql Alto Consumo de CPU y Recursos – Ver que Pasa y Reducir el Consumo

skamale-mysql

Mysql el gran dolor de cabeza de muchos webmasters y también de sysadmins que son los que tienen que dar las malas noticias al web masters y decirle que el mysql es el causante de todas sus caídas, penas, angustias y de que habrá que hacer cambios en la web.

Bueno, este tema va desde mi punto de vista y desde mi experiencia de sysadmin, muchos de mis clientes han tenido problemas con el mysql y aquí voy a repasar los puntos más interesantes, también cosas que he hecho para solucionar los problemas y sobre todo que es lo que puede causar los problemas y el alto consumo de cpu por parte de mysql

Comenzamos, con vbulletin, luego wordpress, luego mysql en general y al final de todo unos tips y herramientas que tienen que tener a mano.

Ah y antes de comenzar cuando digo alto consumo de cpu es que mysql usa 100% de cpu o más ( en cores 1 o 2 o los que sean ) aunque 50 % ya es bastante también.

Vbulletin – Consumo elevado de Mysql

Vbulletin o SMF, tal vez hasta mybb, los foros siempre consumen bastante, unos más que otros pero en este caso vamos con el vbulletin.

Pueden haber varias razones por las que Vbulletin consuma mucho mysql y una es por las visitas, entre más visitas más peticiones a la base de datos, más información se lee y se escribe y eso aumenta el consumo, para esto no hay muchas cosas que hacer, configurar mysql, instalar memcached o bien poner un servidor aparte para mysql si el consumo fuera muy elevado, aunque con memcached podemos ir tirando en un buen server sin necesidad de dividirlo.

Bien, a veces el alto consumo de mysql no es por las visitas si no por los plugins ( de esto vamos ha hablar mucho en este tema ) he tenido varios clientes que con no muchas personas online según el contador de VB entre 1000 y 2000 han experimentado un uso elevado de CPU por parte de la base de datos y el problema no eran las visitas si no más bien el señor google y no precisamente el efecto google que muchos conocen si no las visitas que provenían de él.

Les explico, Fussy Seo Booster + muchas visitas de buscadores = CPU en Rojo.

El fussy seo booster ese ese plugin que inserta las keys usadas por los visitantes para entrar a nuestro sitio, si tenemos muchas visitas que vienen de google, tendremos muchos términos de búsqueda y esto es igual a escribir mucho en la base de datos, actualizar la tabla etc etc en vbulletin aveces es el causante de todos los problemas, al menos hasta donde he visto solo este plugin se puede comer 300% de cpu en foros muy visitados.

Así que si tienen problemas de CPU por culpa de la base de datos y tienen este plugin o uno que tenga una función similar intenten deshabilitarlo y notarán grandes mejoras ( siempre y cuando tengan muchas visitas desde buscadores )

Y otra cosa que pueden hacer es deshabilitar el buscador del foro, que si tienen a mucha gente buscando tendrán muchas consultas y el efecto será el mismo.

WordPress Alto Consumo de Mysql

En wordpress se da el mismo caso que en vbulletin, existe el Fuzzy Seo Boster y el Seo Serch Tagging 2 que consumen muchos recursos por lo ya explicado más arriba aunque el SEO Serch me parece que es un poco más ligero.

La ventaja de los blogs es que tienen buenos sistemas de cache y casi todo puede ser estático y el consumo de mysql es casi nulo en la mayoría de los casos, aunque siempre hay excepciones, en webs con pocas visitas se puede llegar a consumir mucho y les voy a decir cuales pueden ser los motivos.

1- Los plugins mencionados arriba.
2- Los plugins tipo CountPost, que son esos que insertan la cantidad de visitas que ha tenido una entrada ( Este post a tenido 2500 vistas etc ) esos pueden ser un gran preoblema, al menos por lo que he visto dan más problemas cuando se tienen muchas visitas a un mismo tema, efecto twitter, facebook, meneame, barrapunto etc, en esos casos se actualiza muy seguido el mysql y he visto que se puede llegar a consumir hasta 120% o más de CPU con 500 visitas online en un mismo tema, aunque como digo provenientes desde facebook al mismo post, no he notado que se consuma tanto en webs con muchas visitas pero más distribuidas entre muchos temas, pero serán casos y casos.
3- Los plugins de analytics, esos que nos muestran estadísticas de las visitas en wordpress,como el stat press y similares, con muchas visitas el consumo de mysql aumenta bastante y no solo eso si no que el espacio utilizado crece, crece y no para de crecer llegando a unos cuantos gigas en menos de un año, aunque sobre este caso ya he hablado y lo pueden ver aquí: Stat Press – Un Plugin de Estadisticas para WordPress Peligroso para tu Base De Datos

Creo que eso sería todo con wordpress, hay más plugins que pueden causar problemas, el star rating en casos muy raros puede elevar el consumo de recursos pero como digo es en casos muy raros, al menos que tengan muchas visitas clicando en las estrellitas.

Mysql Consume Muchos Recursos CPU – Disco Duro (IO/Wait)

No siempre es problema de un plugin que mysql no trabaje bien, a veces es una tabla dañada, aveces la misma web que hace muchas consultas y no podemos hacer nada por que ya esta optimizada al máximo y lo único que podemos hacer es revisar el servidor y ver que pasa.

Como ya dije antes, memcached puede ayudar a solucionar algunos problemas, añadir otro servidor aparte para mysql también, este es el único remedio para algunas páginas webs que tienen mucho tráfico, aunque hay más cosas por ver.

En estos días he mirado varias webs que tenían un consumo entre 80 y 170% bastante alto y no parecía que la web tuviera algún problema serio, sin plugins, sin nada, solo mucho tráfico aunque las consultas a la base de datos por cada visita eran muy pocas, así que investigando lo primero que note es que el servidor tenia un disco duro SATA, si solo 1 por lo cual había mucho el mysql no solo iba lento si no que también generaba mucho IO/WAIT, por más que configuraba y re-configuraba el problema persistía y mucha RAM no había para memcached, en este caso mysql afectaba a apache y a php también por el IO/WAIT.

Bueno, la solución fue sencilla, 4 Discos Duros SAS 15K en RAID10 los problemas del servidor desaparecieron, el consumo de mysql y del IO/WAIT, el mysql no pasa del 5% y no afecta a nadie aún sin configurar por completo.

Con esto les puedo decir que mysql puede consumir mucho por muchas razones, plugins, consultas innecesarias, tablas dañadas, discos duros lentos, mala configuración etc. Muchos problemas también quiere decir muchas soluciones posibles:

1- Revisar y quitar plugins.
2- Revisar y quitar consultas inecesarias.
3- Revisar las tablas y hacer un chequeo de vez en cuando ( optimizar y reparar en phpmyadmin )
4- En muchos casos memcached puede ser suficiente para aligerar la carga.
5- Si se tienen los recursos necesarios y se quiere mucha más fluides y que mysql no afecte a nada lo ideal es comprar un servidor aparte para mysql.
6- Antes de hacer nada revisar los discos duros, unos discos duros lentos siempre afectarán al servidor entero no solo a mysql. Las bases de datos trabajan mejor en Raid10, SAS, SSD etc, mayor velocidad de lectura es igual a un mayor rendimiento y más fluidez, más cuando se grean muchas tablas temporales en el disco duro, si no pueden poner un RAID10, Cambiar de servidor y tal, lo que pueden hacer es añadir otro disco duro solo para mysql, si es SSD mucho mejor, luego mover /var/lib mysql a ese disco duro y configurar en el my.cnf que el tmp de mysql sea ese disco, esto será mucho mejor que dejarlo tal cual, la ventaja es que no hay que mudar todo, el data center añade el disco, el sys admin hace el cambio y listo.

Bueno creo que es todo, les daría mis configuraciones de mysql, pero la verdad que cada server tiene la suya y cada servidor hay que configurar lo de una manera diferente así que casi nunca comparto el my.cnf por que se que a muchos no les servirá lo que a mi me a servido, aunque si les dejo el mysql tunner / tuning-premier que les ayudará a configurar el mysql buscando las mejores opciones, hambos los pueden descargar desde este enlace: herramientas para configurar / optimizar mysql

Una respuesta a “Mysql Alto Consumo de CPU y Recursos – Ver que Pasa y Reducir el Consumo”

Comentarios cerrados.