Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Reiniciar un servicio en caso de caida
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
simonbcn
n00b
n00b


Joined: 01 Aug 2011
Posts: 35
Location: Terrassa, Barcelona, Spain

PostPosted: Thu Feb 23, 2012 7:43 pm    Post subject: Reiniciar un servicio en caso de caida Reply with quote

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
View user's profile Send private message
2uncas
Apprentice
Apprentice


Joined: 22 Oct 2004
Posts: 260
Location: Cogolludo (Guadalajara)

PostPosted: Thu Feb 23, 2012 9:53 pm    Post subject: Reply with quote

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
View user's profile Send private message
simonbcn
n00b
n00b


Joined: 01 Aug 2011
Posts: 35
Location: Terrassa, Barcelona, Spain

PostPosted: Fri Feb 24, 2012 11:27 am    Post subject: Reply with quote

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
View user's profile Send private message
agdg
Guru
Guru


Joined: 15 Aug 2010
Posts: 320

PostPosted: Fri Feb 24, 2012 3:18 pm    Post subject: Reply with quote

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.
_________________
make install . es
Noticias, apuntes y pequeños tutoriales sobre GNU/Linux
Back to top
View user's profile Send private message
gringo
Advocate
Advocate


Joined: 27 Apr 2003
Posts: 3748

PostPosted: Fri Feb 24, 2012 3:57 pm    Post subject: Reply with quote

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
View user's profile Send private message
simonbcn
n00b
n00b


Joined: 01 Aug 2011
Posts: 35
Location: Terrassa, Barcelona, Spain

PostPosted: Fri Feb 24, 2012 4:04 pm    Post subject: Reply with quote

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
View user's profile Send private message
agdg
Guru
Guru


Joined: 15 Aug 2010
Posts: 320

PostPosted: Fri Feb 24, 2012 9:41 pm    Post subject: Reply with quote

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.
_________________
make install . es
Noticias, apuntes y pequeños tutoriales sobre GNU/Linux
Back to top
View user's profile Send private message
simonbcn
n00b
n00b


Joined: 01 Aug 2011
Posts: 35
Location: Terrassa, Barcelona, Spain

PostPosted: Sat Feb 25, 2012 10:27 am    Post subject: Reply with quote

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
View user's profile Send private message
opotonil
l33t
l33t


Joined: 17 Jun 2005
Posts: 792
Location: 127.0.0.1

PostPosted: Sat Feb 25, 2012 12:54 pm    Post subject: Reply with quote

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
View user's profile Send private message
simonbcn
n00b
n00b


Joined: 01 Aug 2011
Posts: 35
Location: Terrassa, Barcelona, Spain

PostPosted: Sat Feb 25, 2012 12:58 pm    Post subject: Reply with quote

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
View user's profile Send private message
opotonil
l33t
l33t


Joined: 17 Jun 2005
Posts: 792
Location: 127.0.0.1

PostPosted: Mon Mar 05, 2012 12:19 pm    Post subject: Reply with quote

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
View user's profile Send private message
simonbcn
n00b
n00b


Joined: 01 Aug 2011
Posts: 35
Location: Terrassa, Barcelona, Spain

PostPosted: Mon Mar 05, 2012 1:06 pm    Post subject: Reply with quote

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
View user's profile Send private message
Inodoro_Pereyra
Advocate
Advocate


Joined: 03 Nov 2006
Posts: 2631
Location: En la otra punta del cable

PostPosted: Fri Apr 06, 2012 7:37 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum