Diferencia entre revisiones de «Uso-apache-httpd»
(Página nueva: 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 USUARIO...) |
m |
||
(No se muestran 7 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
− | 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". Al cancelar con Ctrl-C muestra un | + | 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. Como segundo parámetro recibe un máximo de iteraciones, si no se usa se consideran ilimitadas (aporte de [[http://blog.pucp.edu.pe/ghiga Gustavo]]). | ||
+ | |||
+ | 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 5: | Línea 9: | ||
<source lang=bash> | <source lang=bash> | ||
#!/bin/bash | #!/bin/bash | ||
− | + | #Creado por FJ | |
+ | #Sea licencia GPL | ||
intervalo=${1:-60} | intervalo=${1:-60} | ||
+ | maxiteraciones=${2:-0} | ||
n=0 | n=0 | ||
s=0 | s=0 | ||
Línea 15: | Línea 21: | ||
memp=0 | memp=0 | ||
memm=0 | memm=0 | ||
+ | conexioness=0 | ||
+ | conexionesp=0 | ||
+ | conexionesm=0 | ||
usuario=${USUARIOAPACHE:-apache} | usuario=${USUARIOAPACHE:-apache} | ||
binario=${BINARIOHTTPD:-httpd} | binario=${BINARIOHTTPD:-httpd} | ||
+ | puerto=${PUERTOAPACHE:-80} | ||
− | trap 'echo En $n intervalos de $intervalo | + | trap 'echo -e En $(( n * intervalo / 3600 ))h $(( n * intervalo / 60 % 60 ))m $((n * intervalo % 60 ))s \($n intervalos de $intervalo"s"\) hubo $p procesos en promedio \($memp"M"\), con un pico de $m \($memm"M"\). "\n"Conexiones promedio: $conexionesp, con un pico de $conexionesm' 0 |
− | while [[ | + | echo -e "Seq\tFecha Hora\tMem\tProc\tMedia\tConex.\tClientes" |
− | lista=$(ps u -u $usuario | grep $binario | awk '{print $ | + | while [[ $maxiteraciones -eq 0 || $n -lt $maxiteraciones ]]; 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) | c=$(echo $lista | wc -w) | ||
− | mem=$(echo $ | + | 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)) | n=$((n + 1)) | ||
mems=$((mems + mem)) | mems=$((mems + mem)) | ||
Línea 29: | Línea 46: | ||
s=$((s + c)) | s=$((s + c)) | ||
p=$((s / n)) | p=$((s / n)) | ||
− | + | conexioness=$((conexioness + conexionesc)) | |
− | + | conexionesp=$((conexioness / n)) | |
− | echo $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 | sleep $intervalo | ||
done | done | ||
Línea 37: | Línea 57: | ||
[[Category:Bash Scripts]] | [[Category:Bash Scripts]] | ||
+ | [[Category:Apache]] |
Revisión actual del 21:49 11 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. Como segundo parámetro recibe un máximo de iteraciones, si no se usa se consideran ilimitadas (aporte de [Gustavo]).
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}
maxiteraciones=${2:-0}
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 * intervalo / 3600 ))h $(( n * intervalo / 60 % 60 ))m $((n * intervalo % 60 ))s \($n intervalos de $intervalo"s"\) 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 [[ $maxiteraciones -eq 0 || $n -lt $maxiteraciones ]]; 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