Problemas de CPU en servidor dedicado: Exceso de carga

  • Autor Autor Unknown
  • Fecha de inicio Fecha de inicio
U

Unknown

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola chicos como están!
Estoy teniendo problemas de exceso de CPU, adjunto imagen:



Mi servidor es de 16 nucleos (2.0Ghz), 32GB de ram y como 500GB NvMe (Ubuntu 20.04)
De lo mencionado el CPU es la que llega hasta 16 nucleos en uso, la RAM llega maximo a 16GB y el disco menos del 30%.

No se que puede estar pasando, anteriormente tenia entre 135 000 visitas diarias pero con las ultimas updates de google he llegado a tener solo 102 000 visitas diarias aproximadamente (entre varios sitios web), tengo como 3500 visitas conectadas al mismo tiempo casi todo el día.

Mis sitios web están hechos en Laravel con cache integrado en files, lo que significa que una vez visitado una entrada se genera un html y evita usar MySQL nuevamente.
He estado trabajando de esta forma durante meses y hace 2 días note una bajada de visitas muy elevada, entre por SSH y me di la sorpresa del CPU en 100%.

Lo normal es usar entre el 5 y 40% de CPU (cuando hay muchas visitas sube hasta 40), pero incluso en horario donde tengo bajas visitas llega hasta el 100%, como si 100 usuarios consumiera todo el servidor.

Me he planteado varios aspectos:
1. Consultas SQL que consumen muchos recursos: Ya solucionado, he optimizado las consultas SQL y también agregue indices correspondientes, he notado mucho mas veloz el sitio web pero en temas de rendimiento de CPU no he visto cambios.
2. Problemas del servidor: No tengo mucha experiencia en esto asi que se lo deje a un sysadmin y bueno primero me hizo algunas modificaciones via cloudflare para activar el anti ddos, filtro de visitas, aumento de seguridad por cache. Recientemente no he visto una mejora por lo que está instalando una aplicacion firewall , aun estoy en espera de ello.
3.Problemas de configuración MariaDbd: Esto nunca he tocado, he visto en internet que varios aumentan las conexiones y entre otras cosas pero tengo miedo de empeorarlo.


A alguien le ha pasado? me podrían dar su opinión ya que voy 2 días con esto y no me deja estar en paz o descansar.
PD: No creo que sea por las visitas diarias ya que voy mas de 6 meses trabajando con el mismo servidor y no he tenido problemas de este tipo.
----------------
Extra: Justo el día que tuve estos problemas me paso un error trágico donde toda la base de datos se me lleno de null por problema mio de una consulta mal hecha, por ello elimine las bases de datos y realice una importación de mi backup con el comando mysql en SSH.
El backup fue un exito (mi base de datos se importo con los indices correspondientes) pero desde ahi visualize mas el comando HTOP, TOP y note el uso del CPU altísimo, no se si tenga algo que ver pero igual lo menciono de todas formas.


Referencias de otros temas donde mencionan mi problema pero sin solucion:
 
Última edición:
efectivamente , MariaDB se esta comiendo tu cpu tendrías que seguir mejorando las consultas de la db o optimizar.
 
Las visitas si influyen porque genera recursos al servidor.

Para mi el culpable es la db y la web no esta optimizada deberías de preguntarle a un experto en base de datos y que mire hacer una optimizacion desde el servidor de la base de datos hasta la web.

Puedes revisar los logs de consulta que hace la base de datos que queries te esta ocasionando alto consumo de recursos.

SQL:
SET GLOBAL slow_query_log_file='/var/log/mysql/mysql-slow.log';
SET GLOBAL slow_query_log=1;
SET GLOBAL long_query_time=2;
 
me pasa lo mismo y el causante de todo es dooplay
 
efectivamente , MariaDB se esta comiendo tu cpu tendrías que seguir mejorando las consultas de la db o optimizar.
como decirlo, voy 6 meses y recien ahora estoy teniendo problemas.
El contenido no ha cambiado a excepcion de algunas entradas.

La BD esta optimizada de acuerdo a los Indices de mis tablas y los primary keys correctamente. (se hizo un testeo y la pagina carga rápido, el problema seria el rendimiento del CPU que no se porque se dispara)
 
me pasa lo mismo y el causante de todo es dooplay
jajaja, dooplay es wordpress amigo 🙁 Falta optimizar la base de datos, cuando uno tiene trafico en wordpress ni cache te puede salvar.
Necesitas meterle indices correctamente pero cuidado! que esto puede empeorar como mejorar tu sitio.
 
Las visitas si influyen porque genera recursos al servidor.

Para mi el culpable es la db y la web no esta optimizada deberías de preguntarle a un experto en base de datos y que mire hacer una optimizacion desde el servidor de la base de datos hasta la web.

Puedes revisar los logs de consulta que hace la base de datos que queries te esta ocasionando alto consumo de recursos.

SQL:
SET GLOBAL slow_query_log_file='/var/log/mysql/mysql-slow.log';
SET GLOBAL slow_query_log=1;
SET GLOBAL long_query_time=2;

Estoy en eso, tengo un contacto de experto en base de datos y estoy esperando que me acepte por skype </3 , aunque yo tengo conocimientos de bases de datos y se optimizarlos (de acuerdo a los indices y las relaciones (many2many, one2one, one2many))
La base de datos pesa 3GB por si necesitan saberlo.

PD: Ahora mismo revise que mi tabla cartas_letras (relacion many2many) tiene 70 000 entradas, le acabo de agregar dos indices a : cartas_id y letras_id de la tabla cartas_letras, vi que mejoro en la carga del sitio web y mejoro el rendimiento del CPU (espero que sea eso).

Muchas gracias por el codigo, procedo a revisar.
 
tal vez son consultas con una query string y no estan cacheandose

ej forobeta.com/?iqowjeoqjw908

el mejor punto de partida es primero limitar el numero de conexiones simultaneas en php, luego identificar donde especificamente estan generandose analizando el access_log de cada web
 
tal vez son consultas con una query string y no estan cacheandose

ej forobeta.com/?iqowjeoqjw908

el mejor punto de partida es primero limitar el numero de conexiones simultaneas en php, luego identificar donde especificamente estan generandose analizando el access_log de cada web

Hola!
si vienen por forobeta.com/?1qwdiqwdiwq se genera otra consulta y por ende necesita cachearse nuevamente.
No he obtenido esto aún (revise por cloudflare los enlaces entrantes y solo hay urls normales).

PD: Incluso se tumbaron mi sitio web y el GPU seguía en 100% XD
Si el sitio esta caído debería al menos bajar el GPU un poco no ? 😳
 
Hola!
si vienen por forobeta.com/?1qwdiqwdiwq se genera otra consulta y por ende necesita cachearse nuevamente.
No he obtenido esto aún (revise por cloudflare los enlaces entrantes y solo hay urls normales).

PD: Incluso se tumbaron mi sitio web y el GPU seguía en 100% XD
Si el sitio esta caído debería al menos bajar el GPU un poco no ? 😳

Ni tanto, ya que deben haber requests pendientes apuntando a una dirección que creen que aún existe.
 
Ni tanto, ya que deben haber requests pendientes apuntando a una dirección que creen que aún existe.
por ahora aumentar indices en la tabla a mejorado el rendimiento respecto a consultas.
Significa que el cache está bien y las consultan ya no consumen muchos recursos.

Aparte de eso, el sysadmin hizo una nueva construcción de nginx y le instalo un script firewall recientemente (ha mejorado aun mas el rendimiento).

Ahora mariadb tiene 45% de uso de CPU, un total de 1 nucleo con 2800 visitas en simultaneo. (Significa que ha reducido el uso en un 90% para la misma cantidad de visitas).

Solo queda esperar si realmente esta solucionado, les comento de aqui a algunas horas o dias como me fue.
 
Más caché nomás, y hacer pruebas de que el caché está realmente funcionando. En los distintos escenarios de tu sitio o aplicación.
 
Más caché nomás, y hacer pruebas de que el caché está realmente funcionando. En los distintos escenarios de tu sitio o aplicación.
ya realize cache a todas las entradas del sitio web (no uso aplicativo).
Si los he testeado 🙁 (lo raro es como me podia consumir CPU mariadbd si ya no hacian consultas SQL? XD, fue demasiado raro)
En fin por ahora esta estable, un 10% del 100% de todos mis CPU.

Alguien mas tuvo problemas similares que no tengan que ver con cache?
Para verificar mas a fondo y ver que puedo hacer.
Gracias a @SnAFKe pude revisar mas a fondo las consultas que necesitaban index necesarios.
 
como decirlo, voy 6 meses y recien ahora estoy teniendo problemas.
El contenido no ha cambiado a excepcion de algunas entradas.

La BD esta optimizada de acuerdo a los Indices de mis tablas y los primary keys correctamente. (se hizo un testeo y la pagina carga rápido, el problema seria el rendimiento del CPU que no se porque se dispara)
Aquí solo vas a leer teorías que no van acertar mucho al problema, por mensaje privado te van a hacer mucho spam de servicios y yo te seré más directo por aquí, pon un tema en la sección de servicios del foro, para que uno de nosotros los Sys pueda intervenir el problema como corresponde, dado los Screenshots que has compartido, ocupas reconfigurar y optimizar ese servidor, sin profundizar mas a detalle.
 
Migra a Postgre/Supabase y externaliza tus bases de datos
 
Hola!
si vienen por forobeta.com/?1qwdiqwdiwq se genera otra consulta y por ende necesita cachearse nuevamente.
No he obtenido esto aún (revise por cloudflare los enlaces entrantes y solo hay urls normales).

PD: Incluso se tumbaron mi sitio web y el GPU seguía en 100% XD
Si el sitio esta caído debería al menos bajar el GPU un poco no ? 😳
Por el tipo de consultas posiblemente sea un ataque, necesitas crear un argumento que puedas manejar por ejemplo con NGINX para que filtre ese tipo de consultas, suele ser muy común y cambia muy poco la verdad, fácilmente identificable (puedes usar Cloudflare, y configurar el WAF)
 
Atrás
Arriba