problema con servidor con mucho trafico.

Germán Póo-Caamaño gpoo en calcifer.org
Mar Sep 30 01:10:34 CLT 2008


On Tue, 2008-09-30 at 00:45 -0400, Felipe Román Márquez wrote:
> [...]
> Es un buen bicho.
> 
> Esta máquina se usa para una página web y un foro. (mysql + lighttpd +  
> php5 a grandes rasgos)
> 
> la cantidad de carga es mas menos alta. tiene en promedio 3500  
> usuarios conectados durante todo el día y un total de 85.000 visitas  
> únicas diarias.
> 
> el servidor anda bien en consumo de ram:
> 
> free -m
>               total       used       free     shared    buffers      
> cached
> Mem:          4048       3546        501          0        197        
> 2422
> -/+ buffers/cache:        925       3122
> Swap:         9834         71       9763
> 
> 
> la carga promedio no es nada grave:
> 
>   load average: 1.50, 1.57, 1.62   (en promedio la carga es de 2.0,  
> con peaks de 3.0 y bajas de 0.5)
> 
> los discos tienen una buena controladora, el i/o anda bien.

que te dice iostat? vmstat?

> se le hizo un tuning a mysql y anda muy bien, no tiene errores,  
> responde rápido, etc etc.
> 
> casi lo mismo con lighttpd.
> 
> 
> antes de todos estos cambios el servidor mostraba a cada rato en la  
> web "servidor ocupado"
> ahora funciona casi perfectamente.

Seguramente porque aumentaste el número de conexiones http.

> corregí todo lo que aparecía en los logs de errores de mysql, de  
> lighttd del messages, etc etc (ha sido harta pega), el servidor estaba  
> casi abandonado e instalado con las configs por defecto.
> [...]
> tengo abierta una consola para ver htop, otra con tail -f al messages,  
> otro tail -f al lighttpd/error_log  y  tail -f al log de errores de  
> mysql.
> 
> mirando el htop, con los 8 nucleos con carga (Load Average de 2 a 3 ),  
> sin previo aviso y sin logs de errores ni warnings, todos los nucleos  
> se van a CERO carga, y el sitio no funciona.
> no hay logs, no hay avisos, no hay nada, pasa aprox 1 minuto y sube la  
> carga de nuevo y el server sigue trabajando como si nada....

No es tanta una carga de 2 ó 3.  Me imagino que responde bien el sistema
si es que tienes respuesta con htop y tail.  De hecho, debieras tenerla.

> le subí las conexiones.
> le subí el max de archivos abiertos.

Esto también incide en la memoria en uso.  Puedes deshabilitar KeepAlive
en las conexiones HTTP o dejarlo en 1 segundo.

> le cambié el nice a mysql y al lighttpd.
> le cambie el limits.conf
> y esto sigue pasando.
> alguien tiene alguna idea??? (de verdad que todo me sirve)
> no tengo logs ni mensajes ni nada, ando dando palos de ciego.

Una cosa es afinar el motor de BD y otra es afinar las BD (tablas,
índices, consultas).

Si lighty sigue respondiendo, el problema lo puedes tener en la
comunicación con la base de datos.

Podrías utilizar fast-cgi para mejorar el rendimiento de PHP con lighty,
pero es muy probable que el problema esté en la aplicación o en la base
de datos, ya sea por algún bloqueo, consultas no optimizadas, deadlocks,
etc.  En tal caso, revisa como analizar lo que hace el planificador de
MySQL.

Las optimizaciones en la infraestructura sirven, pero no tanto si las
aplicaciones utilizan fuerza bruta para funcionar.

Suerte,

-- 
Germán Póo-Caamaño
http://www.calcifer.org/



Más información sobre la lista de distribución Linux