View previous topic :: View next topic |
Author |
Message |
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Thu Feb 23, 2012 7:43 pm Post subject: Reiniciar un servicio en caso de caida |
|
|
Hola,
Uso transmission-daemon en un servidor pero, todavía no sé porqué razón, cada cierto tiempo se cae. Me gustaría saber si hay alguna manera de indicarle al script de arranque que monitorice la ejecución y, en caso de caída, lo reinicie.
Un saludo. |
|
Back to top |
|
|
2uncas Apprentice
Joined: 22 Oct 2004 Posts: 287 Location: Cogolludo (Guadalajara)
|
Posted: Thu Feb 23, 2012 9:53 pm Post subject: |
|
|
Hola
Yo tengo script para ver que ciertos servicios están en ejecución y en caso de caída arrancarlos, son scripts que he sacado de internet (ya no se de donde).
Este es para Apache:
Quote: |
#!/bin/bash
set -e
NPRO_ACT="$(rc-status | grep apache2 | grep stopped | wc -l)"
NPRO_MIN="1"
if [ "$NPRO_ACT" -ge "$NPRO_MIN" ]; then
/etc/init.d/apache2 restart
fi
|
Luego pongo una tarea en el cron para que cada x minutos lance el scrip
Saludos, |
|
Back to top |
|
|
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Fri Feb 24, 2012 11:27 am Post subject: |
|
|
Gracias, buscando en Google encontré está discusión que habla precisamente sobre implementar en rc la opción que monitorice los servicios y los re-arranque en caso de caída: http://dev.gentoo.org/~vapier/openrc/projects/openrc/ticket/120.html
En él hay dos scripts interesantes:
Este reinicia todos los servicios que han caído (si hay alguno).
Code: | for svc in $(rc-status --crashed); do
rc-service $svc -- --nodeps restart
done |
Este es más completo y solo reinicia los servicios que han caído de una lista que nosotros especificamos.
Code: | echo "Checking for crashed services:"
rc_monitor_restart="apache dovecot postfix postgres"
for svc in $(rc-status --crashed); do
for chk in $rc_monitor_restart; do
if [ "$chk" = "$svc" ]; then
# We use --nodeps as a restart could stop critical services that depend on us
rc-service $svc -- --nodeps restart
continue 2
fi
done
echo " $svc crashed and requires a manual restart"
done |
Ahora tengo que comprobar que cuando cae un servicio como Transmission o vsftpd, rc realmente lo detecta como caído o no. Pero para ello debo esperar a que falle y comprobarlo.
También he encontrado este programa: monit, que se usa, entre otras cosas, para monitorizar programas/servicios. ¿Alguien lo ha usado? |
|
Back to top |
|
|
agdg Guru
Joined: 15 Aug 2010 Posts: 320
|
Posted: Fri Feb 24, 2012 3:18 pm Post subject: |
|
|
Cuando un servicio en ejecución pasa a crashed, es porque el sistema lo ha matado o por un bug del servicio que hizo que fallara. Lo más lógico es pensar que el sistema esta matando el servicio. Puesto que se trata de un programa p2p, es probable que el proceso este superando los limites de uso de "archivos" que el sistema tiene asignado al usuario.
Pongo entre comillas la palabra archivo porque hay que recordar que en linux todo son archivos, desde el teclado hasta un socket. Y si por algo se caracterizan los programas de p2p es por abrir cientos de conexiones. Por lo que no es raro, que tu programa de p2p este superando los límites de uso impuestos por tu sistema en cuanto a la cantidad de "archivos" que puede abrir un proceso.
Todo esto debería quedar registrado en los logs, tanto del programa que uses como los de tu sistema. Aunque si no te apetece a buscar entre los logs, simplemente puedes probar el remedio y ver si se soluciona.
echo "usuario-que-corre-el-proceso hard nofile 2048" >> /etc/security/limits.conf
Con eso indicas que los procesos que corra el usuario indicado puedan abrir hasta 2048 "archivos". Si algún programa se pasa de los 2048, el kernel lo mata. Por cierto, el límite por defecto para cualquier usuario es de 1024. _________________ Antonio Guillen · USAM · Un SysAdmin Más |
|
Back to top |
|
|
gringo Advocate
Joined: 27 Apr 2003 Posts: 3793
|
Posted: Fri Feb 24, 2012 3:57 pm Post subject: |
|
|
Quote: | También he encontrado este programa: monit, que se usa, entre otras cosas, para monitorizar programas/servicios. ¿Alguien lo ha usado? |
si, yo lo uso bastante en sistemas con CentOS y va de maravilla.
En gentoo nunca lo he probado pero seguro que funciona igual de bien.
saluetes |
|
Back to top |
|
|
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Fri Feb 24, 2012 4:04 pm Post subject: |
|
|
agdg wrote: | echo "usuario-que-corre-el-proceso hard nofile 2048" >> /etc/security/limits.conf |
Gracias, lo he puesto a 8192 porque hay 3 Transmission + vsftpd (para 3 usuarios) + etc... ejecutándose a la vez.
gringo wrote: | Quote: | También he encontrado este programa: monit, que se usa, entre otras cosas, para monitorizar programas/servicios. ¿Alguien lo ha usado? |
si, yo lo uso bastante en sistemas con CentOS y va de maravilla.
En gentoo nunca lo he probado pero seguro que funciona igual de bien. |
Estoy en ello, creo que ya he conseguido configurarlo (la verdad es que no es tan sencillo como parece) y he aprovechado para que monitorice también el servicio SSH, FTP y el espacio libre en el disco duro. Es un programa muy completo. |
|
Back to top |
|
|
agdg Guru
Joined: 15 Aug 2010 Posts: 320
|
Posted: Fri Feb 24, 2012 9:41 pm Post subject: |
|
|
simonbcn wrote: | Gracias, lo he puesto a 8192 porque hay 3 Transmission + vsftpd (para 3 usuarios) + etc... ejecutándose a la vez. |
El limite no es al usuario en global, sino a los proceso que corre el usuario. Es decir, un limite de 1024 significa que el usuario puede correr "infinitos procesos" pero cada proceso solo puede abrir 1024 descriptores como máximo. Aunque obviamente la suma de los descriptores abiertos por todos los procesos pueden superar el limite impuesto.
Un ejemplo, con mi usuario
Code: | agd@agd-desktop ~ $ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 112294
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
agd@agd-desktop ~ $ lsof -c gnome-panel -n | wc -l
160
agd@agd-desktop ~ $ lsof -c gnome-session -n | wc -l
126
agd@agd-desktop ~ $ lsof -c gnome -n | wc -l
885
agd@agd-desktop ~ $ lsof -c gnome-terminal -n | wc -l
145 |
El número máximo de descriptores es 1024 (open files (-n) 1024), sin embargo si sumas los cuatro procesos de gnome que he consultado, ya suman 1316 descriptores. Y eso es debido a que ese máximo no se aplica al usuario sino a los procesos ejecutados por el usuario, es decir, cada proceso tiene un limite de 1024 descriptores.
Tras lo dicho, 8192 creo que es un limite muy grande. Probablemente con 2048 o 4096 tengas de sobra. En cualquier caso siempre puedes orientarte usando lsof para averiguar cuantos "archivos" tienen abierto tus procesos. _________________ Antonio Guillen · USAM · Un SysAdmin Más |
|
Back to top |
|
|
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Sat Feb 25, 2012 10:27 am Post subject: |
|
|
agdg wrote: | simonbcn wrote: | Gracias, lo he puesto a 8192 porque hay 3 Transmission + vsftpd (para 3 usuarios) + etc... ejecutándose a la vez. |
El limite no es al usuario en global, sino a los proceso que corre el usuario. Es decir, un limite de 1024 significa que el usuario puede correr "infinitos procesos" pero cada proceso solo puede abrir 1024 descriptores como máximo. Aunque obviamente la suma de los descriptores abiertos por todos los procesos pueden superar el limite impuesto.
....
Tras lo dicho, 8192 creo que es un limite muy grande. Probablemente con 2048 o 4096 tengas de sobra. En cualquier caso siempre puedes orientarte usando lsof para averiguar cuantos "archivos" tienen abierto tus procesos. |
entendido, gracias otra vez. He reducido entonces a 2048. |
|
Back to top |
|
|
opotonil l33t
Joined: 17 Jun 2005 Posts: 801 Location: 127.0.0.1
|
Posted: Sat Feb 25, 2012 12:54 pm Post subject: |
|
|
Yo tambien uso Transmission con el mismo problema desde que actualice a la ultima version de pruebas (2.42-r1), cada poco le daba por cascar. La solucion desinstalarlo y eliminar todo rastro para despues instalarlo otra vez, ha sido mano de santo.
Salu2.
PD: Siempre he usado Nagios ya que es el que uso en el curro y me he acostumbrado a el, pero la verdad que para casa se me queda grande. ¿Que tal esta Monit en comparacion? ¿Tiene soporte o algun plugin para IPMI?
Last edited by opotonil on Sat Feb 25, 2012 12:59 pm; edited 1 time in total |
|
Back to top |
|
|
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Sat Feb 25, 2012 12:58 pm Post subject: |
|
|
opotonil wrote: | Yo tambien uso Transmission con el mismo problema desde que actualice a la ultima version de pruebas (2.42-r1), cada poco le daba por cascar. La solucion desinstalarlo y eliminar todo rastro para despues instalarlo otra vez, ha sido mano de santo. |
Yo lo he instalado desde los fuentes, no desde los repositorios de gentoo, así lo configuro a mi gusto y puedo instalar la última versión disponible.
Por otro lado, supongo que era un problema de ficheros abiertos porque de los 3 Transmission que hay ejecutándose en mi servidor, el mio es el único que cascaba y es, con diferencia, el que más torrents tiene: en estos momentos 163.
Un saludo. |
|
Back to top |
|
|
opotonil l33t
Joined: 17 Jun 2005 Posts: 801 Location: 127.0.0.1
|
Posted: Mon Mar 05, 2012 12:19 pm Post subject: |
|
|
No se si puede tener algo que ver, pero cuando instalas Transmission desde portage cuando termina la compilacion te informa de los siguiente:
Quote: |
elog "Since µTP is enabled by default, ${PN} needs large kernel buffers for"
elog "the UDP socket. You can append following lines into /etc/sysctl.conf:"
elog " net.core.rmem_max = 4194304"
elog " net.core.wmem_max = 1048576"
elog "and run sysctl -p"
|
Salu2. |
|
Back to top |
|
|
simonbcn n00b
Joined: 01 Aug 2011 Posts: 69 Location: Denmark
|
Posted: Mon Mar 05, 2012 1:06 pm Post subject: |
|
|
Gracias por vuestras respuestas.
- Estoy usando Monit (os lo recomiendo para monitorizar procesos, disco, etc...).
- He aumentado el número de ficheros con "nofile 2048"
- Y he actualizado Transmission a la versión 2.50
Ahora funciona sin problemas.
Un saludo. |
|
Back to top |
|
|
Inodoro_Pereyra Advocate
Joined: 03 Nov 2006 Posts: 2631 Location: En la otra punta del cable
|
Posted: Fri Apr 06, 2012 7:37 pm Post subject: |
|
|
Cuantos threads hablando de torrents por todos lados ahora que megaupload no existe mas...
Salud! _________________ Mi Blog.
Si no fuera por C, estaríamos escribiendo programas en BASI, PASAL y OBOL. |
|
Back to top |
|
|
|