Diferencia entre revisiones de «Uso-apache-httpd»

De FJWiki
Saltar a: navegación, buscar
Línea 2: Línea 2:
  
 
Recibe como primer parámetro el intervalo en número de segundos entre cada línea de output. Si no se especifica asume 60 segundos.
 
Recibe como primer parámetro el intervalo en número de segundos entre cada línea de output. Si no se especifica asume 60 segundos.
 +
 +
La memoria la calcula sumando la memoria de cada bloque asignado, de esta forma los bloques compartidos entre los distintos procesos se sumarán sólo una vez. Así se saca un estimado bastante real de cuánta memoria está ocupando.
  
 
== Código de uso-apache-httpd ==
 
== Código de uso-apache-httpd ==
Línea 29: Línea 31:
 
echo -e "Seq\tFecha    Hora\tMem\tProc\tMedia\tConex.\tClientes"
 
echo -e "Seq\tFecha    Hora\tMem\tProc\tMedia\tConex.\tClientes"
 
while true; do
 
while true; do
         lista=$(ps u -u $usuario | grep $binario | awk '{print $6}')
+
        mapakb=""
 +
         lista=$(ps u -u $usuario | grep $binario | awk '{print $2}')
 +
        [[ -n $lista ]] && mapakb=$(pmap -d -q $lista | egrep "^[0-9a-f]{8}" | sort | uniq | awk '{print $2}')
 
         conexiones=$(netstat -pnat | grep ":$puerto " | grep ESTABLISHED | egrep "/$binario\s*$")
 
         conexiones=$(netstat -pnat | grep ":$puerto " | grep ESTABLISHED | egrep "/$binario\s*$")
 
         c=$(echo $lista | wc -w)
 
         c=$(echo $lista | wc -w)
         mem=$(echo $lista | sed -e 's/[0-9]\+/& +/g' -e '1 i 0 ' -e '$ a 1024 /p' | dc)
+
         mem=$(echo $mapakb | sed -e 's/[0-9]\+/& +/g' -e '1 i 0 ' -e '$ a 1024 /p' | dc)
 
         conexionesc=$(echo "$conexiones" | wc -l)
 
         conexionesc=$(echo "$conexiones" | wc -l)
 
         ips=$(( $(echo "$conexiones" | egrep -o "([0-9]+\.){3}[0-9]+" | sort | uniq | wc -l) - 1 ))
 
         ips=$(( $(echo "$conexiones" | egrep -o "([0-9]+\.){3}[0-9]+" | sort | uniq | wc -l) - 1 ))
Línea 46: Línea 50:
 
         [[ $mem -gt $memm ]] && memm=$mem
 
         [[ $mem -gt $memm ]] && memm=$mem
 
         [[ $conexionesc -gt $conexionesm ]] && conexionesm=$conexionesc
 
         [[ $conexionesc -gt $conexionesm ]] && conexionesm=$conexionesc
         echo -e $n"\t"`date +"%Y%m%d %H%M%S"`"\t"$mem"M\t"$c"\t"$p"\t"$conexionesc"\t"$ips
+
         echo -e $n"\t"`date +"%Y%m%d %H%M%S"`"\t"$mem"M\t"$c"\t"$p"\t"$conexionesc"\t"$ips.
 
         sleep $intervalo
 
         sleep $intervalo
 
done
 
done

Revisión del 05:01 5 may 2009

Script para sacar periódicamente la cantidad de procesos apache que están corriendo. Si se usa un usuario apache distinto a "apache" puede modificarse la variable de entorno USUARIOAPACHE, así como modificar la variable BINARIOHTTPD si es que el binario no es "httpd". Para cambiar el puerto usado puede usarse la variable PUERTOAPACHE. Al cancelar con Ctrl-C muestra un resumen.

Recibe como primer parámetro el intervalo en número de segundos entre cada línea de output. Si no se especifica asume 60 segundos.

La memoria la calcula sumando la memoria de cada bloque asignado, de esta forma los bloques compartidos entre los distintos procesos se sumarán sólo una vez. Así se saca un estimado bastante real de cuánta memoria está ocupando.

Código de uso-apache-httpd

#!/bin/bash
#Creado por FJ
#Sea licencia GPL

intervalo=${1:-60}
n=0
s=0
p=0
m=0
mems=0
memp=0
memm=0
conexioness=0
conexionesp=0
conexionesm=0
usuario=${USUARIOAPACHE:-apache}
binario=${BINARIOHTTPD:-httpd}
puerto=${PUERTOAPACHE:-80}

trap 'echo -e En $n intervalos de $intervalo segundos hubo $p procesos en promedio \($memp"M"\), con un pico de $m \($memm"M"\). "\n"Conexiones promedio: $conexionesp, con un pico de $conexionesm' 0

echo -e "Seq\tFecha    Hora\tMem\tProc\tMedia\tConex.\tClientes"
while true; do
        mapakb=""
        lista=$(ps u -u $usuario | grep $binario | awk '{print $2}')
        [[ -n $lista ]] && mapakb=$(pmap -d -q $lista | egrep "^[0-9a-f]{8}" | sort | uniq | awk '{print $2}')
        conexiones=$(netstat -pnat | grep ":$puerto " | grep ESTABLISHED | egrep "/$binario\s*$")
        c=$(echo $lista | wc -w)
        mem=$(echo $mapakb | sed -e 's/[0-9]\+/& +/g' -e '1 i 0 ' -e '$ a 1024 /p' | dc)
        conexionesc=$(echo "$conexiones" | wc -l)
        ips=$(( $(echo "$conexiones" | egrep -o "([0-9]+\.){3}[0-9]+" | sort | uniq | wc -l) - 1 ))
        [[ "ips" -eq "-1" ]] && ips=0
        n=$((n + 1))
        mems=$((mems + mem))
        memp=$((mems / n))
        s=$((s + c))
        p=$((s / n))
        conexioness=$((conexioness + conexionesc))
        conexionesp=$((conexioness / n))
        [[ $c -gt $m ]] && m=$c
        [[ $mem -gt $memm ]] && memm=$mem
        [[ $conexionesc -gt $conexionesm ]] && conexionesm=$conexionesc
        echo -e $n"\t"`date +"%Y%m%d %H%M%S"`"\t"$mem"M\t"$c"\t"$p"\t"$conexionesc"\t"$ips.
        sleep $intervalo
done