Control de memoria RAM consumida por Apache en servidor web

Como bien sabéis estoy teniendo problemas con el servidor y Apache. En ocasiones sin saber muy bien por qué apache crea tantos hijos que sobrecarga el servidor hasta consumir toda la RAM disponible. Cuando llega a ese punto Linux se encarga de matar los procesos menos prioritarios para liberar recursos. En este caso cuando llega ese punto mata todos los procesos apache y el servidor web se cae.

Para tratar de evitar este problema y consultando con google he preparado este script basándome en un artículo que he encontrado en chuano.net.:

#!/bin/bash
minram=200
extraminram=50
while true; do
        memusage=$(free -m | head -2 | tail -1 | awk {'print $4'})
        if [ "$memusage" -lt "$minram" ]; then
                /etc/init.d/apache reload
        fi
        if [ "$memusage" -lt "$extraminram" ]; then
                /etc/init.d/apache restart
        fi
 
        sleep 1
done

Este script lo he llamado control_apache.sh y tras darle los permisos de ejecución oportunos lo ejecuto de la siguiente forma:

# nice -n -19 nohup ./control_apache.sh &

De este modo el script se ejecuta con máxima prioridad y cuando el servidor se queda con menos de 200MB libres de RAM, recarga apache. Si por el contrario la RAM libre desciende a 50MB reinicia apache, matando así todos los hijos y liberando la RAM.

Artículos relacionados:

Tags: , , , , , , ,

Miércoles, febrero 18th, 2009 Hardware, Scripting

6 comentarios en Control de memoria RAM consumida por Apache en servidor web

  1. Esto es un puto hack de la peor calaña :D

    Un saludo,
    Pedro

  2. Pedro escribió el 19 febrero, 2009
  3. De momento es lo único que me sirve…porque el MaxServers, y el limitar los threads de apache…se los salta y crea hijos hasta que lo tumba…

  4. Jonathan Echeverria escribió el 19 febrero, 2009
  5. En que ruta pongo ese archivo?
    Se ejecuta sólo o tengo que estarlo ejecutando manualmente?

    Gracias!

  6. Samuel escribió el 24 marzo, 2011
  7. Samuel,

    El script lo puedes poner en la ruta que quieras. No importa para nada. Luego lo puedes ejecutar manualmente y el script se queda corriendo en background y reiniciando el apache si cumple las condiciones preestablecidas.

  8. Jonathan Echeverria escribió el 24 marzo, 2011
  9. tengo problemas con mi server que crea y crea y crea procesos y siempre acumula y nunca los finaliza…
    probare que tal me va con este script. gracias por la información.

  10. Yeow escribió el 28 marzo, 2011
  11. Una consulta extra, en mi caso, lo coloque en /etc/control_apache.sh

    pero me da el siguiente error:

    nohup: ignoring input and appending output to `nohup.out’
    nohup: cannot run command `/etc/control_apache.sh’: Permission denied
    [1]+ Exit 126 nice -n -19 nohup /etc/control_apache.sh

    puede ser porque modifique el archivo? en mi caso apache es apache2 y reemplace la ruta por /etc/init.d/apache por etc/init.d/apache2

    sera por eso? es que yo no tengo “apache” tengo “apache2″

    y una ultima consulta… si quisiera agregar una tercer linea que diga que cuando falten 5 megas de memoria se reinicie… eso seria posible?
    gracias y mil disculpas por las molestias

  12. Yeow escribió el 28 marzo, 2011

Deja un comentario


Buscador

 

Mi foto aleatoria

dsc_0496.jpg
 
 

Comentarios recientes

Natty: Actualmente Facebook ya permite navegar en https. ...
Maria del mar: Estoy totalmente de acuerdo vergonzoso! Me ha pasa...
F. Javier: Bueno , pensaba que solo yo tenia problemas con "E...
jose vazquez: Gracias por la ayuda Jhonatan, resolví mi problem...
Marisa: COMO MAREAR LA PERDIZ: LLamo al 900847384 de Aten...
carloscarlosnasarre: hola a mi tambien me atendio un personaje de endes...
Victor David: El video esta muy gracioso lo vi 3 veses y realme...
Enrique: tu link Descargar generador de sitemap para Google...
daniellillo: esta mui vien...
kalia: Me gusta la información útil que usted proporcio...
Matt Stoner: Tons of great info....thanks. I'm going to share ...
Josey: El caso de Facebook es más justificable… Ut...
alicia: hola amigo me podria dar los precios como cuantos ...
Ignacio: Por fin encuentro alguien que oriente el cómo den...
Jonathan Echeverria: Hola, ¿El problema es que no puedes mostrar la...
RASEC28: Hola Jonathan gracias por contestar no he logrado...
Jonathan Echeverria: Hola, por supuesto que es posible,ya que la MV la ...
RASEC28: HOLA A TODOS, SOY NUEVO EN ESTO DE LAS VM NECESITO...
soraya: a mi me han atendido tres operadores diferentes,ca...
Roinel Cequea: Buenas noches amigo, mi blog presenta ese problema...
totci: Gracias por tomarse el tiempo para discutir esto ,...
Diego Estrada Moreno: Desafortunadamente todo lo que se comenta en esta ...
Juan: A ti, al menos, te han cogido el teléfono. A mí...
mario fernandez: quisiera compartirla, con mis amigos , como hago...
mario fernandez: muy bueno, me agradaria mas como este, son hermoso...
mario fernandez: muy bueno...
LUIS: NO HE VISTO UN SERVICION DE ATENCION TAN MALO COMO...
Carlos A. Lizcano D.: Excelente aporte Jonathan! gracias a tu publicaciÃ...
Cristina: Mientras espero que ENDESA me conteste, he encontr...
Pedro Rueda Villegas: Gracias por compartir es de mucha ayuda, y nos qui...