Y no precisamente sobre un pie… hace algun tiempo escribi sobre una máquina que nos estaba dando dolores de cabeza ya que la carga de la misma se iba al cielo.
Usando siege intente ver escenarios hipotéticos donde sysfence entrara en acción para evitar que el sistema se muriera.
Lo primero que note según las gráficas del munin es que el uso de memoria se había disparado al cielo, también la carga. Así que mis primeras reglas fueron sobre la memoria y después sobre la carga… lo que hacían a manera de resumen era que si la carga llegaba a un nivel muy alto, detenían el servicio que suponíamos estaba causando problemas durante digamos 1 minuto, para darle tiempo al cpu de recuperarse de toda la actividad de I/O…
En las pruebas con siege la cosa parecía funcionar bien, pero claro usar siege es «simular» una actividad que uno espera, es decir, para nada se puede comparar con la actividad real que se va a presentar… en todo caso contento con estas reglas, deje listo todo listo.
¿Resultado? La máquina se cayo un domingo al mediodía y puesto que el lunes era festivo, hasta el martes se le dio botonazo.
¿Y entonces?, ¿cambiar la maquina a un sistema mas grande? pues eso seria lo optimo, problema principal… el sistema es custom made, y requiere de compilar algunos módulos específicos… que al menos yo no conozco a fondo.
Pero pensándolo de otra forma, aun cuando el problema se encontraba en las búsquedas en la base de datos, finalmente a esta se accedía mediante apache, el cual podía lanzar diferentes búsquedas complejas, así que pensándolo de nuevo, pudiera ser que la solución fuera recibir menos conexiones concurrentes y bajar en mucho el timeout de las peticiones, es decir si una búsqueda es demasiado compleja, se va a llevar mucho tiempo, ¿por qué no acabar con ella si excede de determinado tiempo? pues bien asi le hice y pues en la configuración de apache modifique los time outs asi como la cantidad máxima de conexiones concurrentes.
[code=’Bash’]
#
# Timeout: The number of seconds before receives and sends time out.
#
# default 300
Timeout 150
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15
#
# Limit on total number of servers running, i.e., limit on the number
# of clients who can simultaneously connect — if this limit is ever
# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
# It is intended mainly as a brake to keep a runaway server from taking
# the system with it as it spirals down…
#
# Default 150
MaxClients 70
#Default 100
#
MaxRequestsPerChild 50
[/code]
Bueno todo este borlote en el httpd.conf ayudó a pasar de

