32 votos

¿Con qué frecuencia debo reiniciar los servidores Linux?

Tengo muchos servidores Linux (SUSE 9 y 10) utilizados para ejecutar servicios web que proporcionan datos a grandes redes de cálculo. Recientemente hemos tenido algunas interrupciones difíciles de explicar (es decir, los registros de hardware y software no muestran ningún error obvio) y estamos empezando a preguntarnos si el largo tiempo de actividad (normalmente 200-300 días) es el problema. Dado que estos servidores se utilizan mucho, ¿debería considerar un ciclo de reinicio regular?

47voto

SPRBRN Puntos 275

Debes reiniciar después de una actualización del kernel (a menos que estés usando KSplice), cualquier otra cosa es opcional. Personalmente, reinicio en un ciclo mensual durante una ventana de mantenimiento para asegurarme de que el servidor y todos los servicios vuelven a funcionar como se espera. De esta manera puedo estar razonablemente seguro de que si tengo que hacer un reinicio fuera de lo previsto (es decir, una actualización crítica del kernel) el sistema volverá a funcionar correctamente. La monitorización automatizada de los servidores y servicios (por ejemplo, Nagios) también contribuye en gran medida a este proceso (reiniciar, ver cómo las luces se ponen rojas y luego, con suerte, todas vuelven a estar en verde).

P.D. si reinicia regularmente, querrá asegurarse de ajustar sus comprobaciones de fsck (es decir, el recuento máximo de montajes entre comprobaciones de forma adecuada, de lo contrario un reinicio rápido de 2 minutos podría llevar 30 minutos si el servidor empieza a fsckear un par de terabytes de datos. Yo suelo poner mi cuenta de montajes a 0 (tune2fs -c 0) y el intervalo entre comprobaciones a 6 meses más o menos y luego fuerzo manualmente un fsck de vez en cuando y reinicio la cuenta.

11voto

Glomek Puntos 12183

De hecho, reinicio mis servidores con bastante regularidad, cada vez que se realizan cambios importantes en la configuración. Es importante saber que, en caso de emergencia, el software del servidor saldrá a flote sin problemas. Lo último que quieres es estar en una posición en la que estás tratando de recuperarte de una interrupción pero tienes que desordenar la configuración de tu servidor porque no lo probaste a fondo cuando lo configuraste.

6voto

Brad Beyenhof Puntos 374

Los servidores Linux nunca necesitan ser reiniciados a menos que absolutamente necesita cambiar la versión del kernel en ejecución. La mayoría de los problemas se pueden resolver cambiando un archivo de configuración y reiniciando un servicio con un init script.

Tienes que tener cuidado con los reinicios... si has cambiado algo "sobre la marcha" sin reflejar tus cambios en el archivo de configuración de un servicio, esos cambios no se aplicarán después de un reinicio.

Sin embargo, suelo reiniciar después de las actualizaciones programadas del sistema. Generalmente no es necesario, pero las hago cuando no hay nadie en la oficina, así que ¿por qué no? De todos modos, a menudo hay actualizaciones del kernel cuando llego a hacer la actualización.

4voto

Jens Ayton Puntos 11566

No es necesario, el manejo de la memoria en Linux es excelente. Pero si estás teniendo tiempos de subida de esa duración, probablemente estás ejecutando kernels que tienen vulnerabilidades conocidas - es posible que quieras vigilar eso.

4voto

Bruce Puntos 3473

Creo que deberías reiniciar si ha habido una actualización reciente del kernel O una actualización de libc. Muchas cosas están enlazadas con libc y no es realmente posible descargar esa lib de la memoria completamente y reemplazarla con la nueva versión a menos que hagas un reinicio.

Por ejemplo, incluso cosas básicas como /bin/ls y otras cosas en /bin utilizan libc. Si sólo estás ejecutando una consola y usando bash, estás usando libc.

$ ldd /bin/bash
        linux-gate.so.1 =>  (0xffffe000)
        libtermcap.so.2 => /lib/libtermcap.so.2 (0xb8029000)
        libdl.so.2 => /lib/libdl.so.2 (0xb8025000)
        libc.so.6 => /lib/libc.so.6 (0xb7ed9000)
        /lib/ld-linux.so.2 (0xb804b000)

$ ldd /bin/ls
        linux-gate.so.1 =>  (0xffffe000)
        librt.so.1 => /lib/librt.so.1 (0xb7f3a000)
        libacl.so.1 => /lib/libacl.so.1 (0xb7f33000)
        libc.so.6 => /lib/libc.so.6 (0xb7de7000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7dd0000)
        /lib/ld-linux.so.2 (0xb7f61000)
        libattr.so.1 => /lib/libattr.so.1 (0xb7dcc000)

Y sí, si cambias los archivos en /etc/init.d que afectan al arranque de alguna manera, yo recomendaría un reinicio. No querrás descubrir que has cometido un pequeño error en un archivo de inicio cuando necesites que las cosas vuelvan a funcionar rápidamente.

Si un servidor ha pasado muchos días sin reiniciarse, en realidad significa que no hay manera de estar seguro de que volverá a funcionar correctamente. Una vez más, esto se debe a que muchos de los archivos de configuración pueden haber sido cambiados en él, y nadie ha reiniciado durante mucho tiempo para asegurarse de que se levanta. Además, si el servidor tiene muchas actualizaciones pendientes y no ha reiniciado durante mucho tiempo, reinicie antes de aplica las actualizaciones, de lo contrario, si hay un problema, no puede estar seguro de que fue causado por un error de configuración hace mucho tiempo o por las nuevas actualizaciones que aplicó.

Por último, si reinicias un servidor crítico después de mucho tiempo, el fsck puede hacer que tengas que esperar mucho tiempo para que vuelva a funcionar. Puedes usar tune2fs para evitar esto, pero es una buena idea comprobarlo regularmente, supongo. Es por esto que no deberías estar en una posición en la que dependes de un solo servidor y si este se va, todo tu sitio web se ha ido. Deberías tener otro en espera.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: