¿Reiniciar el servidor en un horario sería una buena idea para el rendimiento?

14

Me pregunto si reiniciar un servidor en un horario sería una buena idea para el rendimiento.

Digamos que queremos reiniciar el servidor a las 02:00 a.m. por 2 noches.

El servidor aquí es Windows Server 2008 R2. Principalmente, SQL Server e IIS 7.5 (se ejecutan casi 15 aplicaciones) en este servidor. El servidor tiene 4 GB de memoria.

tugberk
fuente
99
¿Realmente tienes problemas de rendimiento? Windows puede durar años sin ser reiniciado. No debería pasar tanto tiempo sin reiniciar, simplemente porque es necesario instalar parches, pero ciertamente es posible. Personalmente, tengo un servidor en una red totalmente aislada que ha estado funcionando durante <checks> 489 días. Todavía funciona bien y el rendimiento es aceptable.
Ben Pilbrow
66
Supongo que lo hace cuando hay una cantidad limitada de memoria o CPU. - Asumes erróneamente.
Rob Moir
44
La persona que da un voto negativo a esta publicación debe explicar por qué. Es una pregunta bien explicada y no tiene nada de malo.
tugberk
17
Lo correcto es solucionar los problemas por los que tiene problemas, no solo reiniciarlos. Las computadoras que se reinician habitualmente se denominan escritorios.
Bart Silverstrim
44
Pueden votar en contra porque algunas preguntas también son una mala idea; Sin embargo, no me viene a la mente un ejemplo en este momento. Hay muchas razones. La gente es extraña. Contamos con el sentido común general para superar los malos y malos juicios. Por eso es un sitio comunitario de preguntas y respuestas.
Bart Silverstrim

Respuestas:

32

Si bien estoy de acuerdo en que no hay nada de malo en reiniciar el cuadro, per se, según su comentario de que el Agente SQL Server se está deteniendo, recomendaría un análisis adicional de la causa raíz. Por lo general, los servicios no solo se detienen, y los servicios del Agente SQL Server no han actuado de esa manera en mi experiencia, por lo general.

Creo que haría bien, además de reiniciar, examinar los registros de eventos y ejecutar un registro de contador de rendimiento a largo plazo que puede analizar con el Análisis de rendimiento de registros (PAL) para ver si "ve" algo incorrecto. Debe intentar, si nada más, correlacionar los eventos asociados con el Agente SQL que se detiene con otros factores.

Evan Anderson
fuente
2
"addt'l" ? Error de análisis en la línea 2.
Tomas
@tugberk: si esta es la respuesta, ¿cuál fue la causa de que el Agente SQL se detuviera después de su análisis sugerido por Evan?
Agosto
@fluffy: ¡Hola! ¡Es genial verte aquí! No sé si alguna vez conociste mi "nombre real". Soy un viejo conocido de Song Fight del período 2003-2005. Piensa en un sintetizador pop y un nombre de "banda" que evoca visiones de basureros y tal vez lo recuerdes.
Evan Anderson
Bueno, eso es bastante offtopic! Hola Ajustador ;) (Por supuesto, esto debe ser tomado al correo electrónico, pero no puedo encontrar su dirección).
esponjosa
38

Si está buscando reiniciar la computadora para mejorar el rendimiento, probablemente significa que eventualmente se encontrará con problemas de administración de memoria.

El almacenamiento en caché es bueno

En todo caso, reiniciar los servidores dañaría el rendimiento (y el tiempo de actividad, por supuesto) en un entorno más ideal . Uno de los fundamentos del rendimiento en informática es aprovechar el almacenamiento en caché (tener datos disponibles en la memoria rápida). Cada vez que reinicia, elimina su caché. Esto es cierto tanto para el servidor SQL como para IIS. Aunque es posible que no tenga el entorno ideal, lo siguiente debería ayudarlo a elegir una mejor opción que reiniciar el servidor de manera programada.

IIS Pérdidas de memoria?

Ahora mencionó que esto es IIS 7.5. Aunque me parece deprimente, muchas aplicaciones web que se ejecutan en IIS 7.5 tienen pérdidas de memoria que los valores predeterminados en IIS son reiniciar la aplicación cada X minutos y cerrarla si un grupo de aplicaciones está inactivo. Lo ideal es reparar las pérdidas de memoria, pero si no puede, puede ajustar esta configuración, que incluye límites de memoria y temporizadores. Puede usar perfmon para averiguar qué proceso w3wp está usando la memoria. Es un poco doloroso, pero puede vincularlo con el grupo de aplicaciones %systemroot%\system32\inetsrv\APPCMD list wps.

Memoria SQL

Volviendo al almacenamiento en caché, SQL tomará la memoria que pueda. Puede limitar esto en las propiedades para el servidor SQL. Si no limita la memoria y también está ejecutando IIS en la caja, estos pueden comenzar a luchar por el rendimiento de la memoria. Este excelente artículo detalla esto en detalle: una guía del administrador de sistemas para la memoria de Microsoft SQL .

Equilibrar

Como tiene IIS y SQL en el mismo cuadro, tendrá que equilibrar su uso de memoria. Si no lo hace, es posible que obtenga memoria que probablemente se usará nuevamente en el disco, lo cual es un lugar terrible para estar (debe haber contadores de rendimiento para la actividad de intercambio). Al utilizar la configuración de reciclaje de IIS y los límites de memoria de SQL, debería poder estabilizar este sistema. Para equilibrar esto, es posible que necesite más memoria que 4 GB. Además, si es una opción, recomendaría encarecidamente colocar el servidor SQL en una máquina dedicada: mejorará mucho el rendimiento y simplificará enormemente las cosas.

Kyle Brandt
fuente
Increíble respuesta Kyle, ¡desearía haber tenido uno de estos meses en mis preguntas relacionadas con el rendimiento de SBS2011! He tocado cada una de las cosas que mencionas a través de mi (muchos meses de) investigación. Aún tengo problemas pero ese es otro asunto.
HaydnWVN
12

No soy partidario de reiniciar servidores en un horario, especialmente no como un medio para resolver algún problema subyacente. Si necesita reiniciar este servidor para resolver un problema de rendimiento, el mejor curso de acción es encontrar la causa del problema y resolverlo. Reiniciar el servidor en un horario regular solo ofusca el problema subyacente.

joeqwerty
fuente
5

Si tiene pérdidas de memoria significativas, entonces, por qué no; de lo contrario, reinicie mensualmente con actualizaciones.

Chopper3
fuente
gracias por el consejo. Estoy mirando el administrador de tareas ahora y veo que el sistema usa el 75% de la memoria.
tugberk
66
Si está ejecutando SQL Server, eso es de esperar. SQL Server intentará (y debería dejarlo) usar toda la memoria que pueda.
Ben Pilbrow
44
eso no significa que tenga pérdidas de memoria. La memoria está ahí para ser utilizada. Y reiniciar para curar las pérdidas de memoria es una solución perfectamente pragmática, pero una mejor solución a largo plazo es encontrar y corregir la falla que las causa.
Rob Moir
1
@tugberk: Como dije en mi respuesta, no ha sido mi experiencia que el servicio del Agente SQL Server se detenga debido a las condiciones de presión de memoria. Presumiblemente, existen condiciones en las que lo haría, pero esperaría que tenga problemas con otros servicios para cuando llegue a ese punto (porque probablemente sería bastante grave).
Evan Anderson
2
Si se tratara de la memoria, debería ver que el intercambio es golpeado con fuerza antes de que simplemente "muera", creo. La memoria siempre se usará tanto como sea posible para el almacenamiento en caché y demás. Probablemente debería usar herramientas para analizar primero el uso de su base de datos. Y si está ejecutando 15 aplicaciones y tiene poca memoria (¿15 aplicaciones + base de datos en 4 conciertos? ¿Qué tan grandes son estas cosas?) Probablemente ya debería estar buscando romper el componente de la base de datos del servidor web a un servidor dedicado.
Bart Silverstrim
2

Si realmente desea reiniciar el servidor en un horario (debido a las fugas o actualizaciones de memoria mencionadas anteriormente o cualquier otra razón), ¿por qué no buscar una solución de clúster? Instale otro servidor en paralelo, conéctelos a un equilibrador de carga (incluso uno simple) y puede reiniciarlos tanto como desee sin perder el tiempo de actividad del servicio o sin preocuparse de que el servidor no arranque en absoluto y estarás fuera

V. Romanov
fuente
1

No es una idea horrenda , pero si es solo 'vudú', probablemente no te ayudará mucho.

Sin embargo, hay dos razones para no permitir que este sea el final de su investigación para mejorar su rendimiento.

Una es la escalabilidad futura. Si sus interrupciones son el resultado de la carga, un cierto número de consultas, una consulta en particular que llega a un error de almacenamiento en caché, compilación de consultas o indexación de btree u otros problemas que actualmente se repiten a diario, probablemente ocurrirán con más frecuencia como carga aumenta con el tiempo Muerde eso de raíz.

El otro problema es que sospecho que necesitará detener las solicitudes entrantes de servicios dependientes durante su reinicio. Acaba de crear una cadencia operativa. Cada vez que deba ejecutarse una tarea diaria, terminará vinculada a su reinicio. En algún momento, tendrá estos reinicios continuos que duran seis horas (no exagero aquí, he visto que suceden en más de una compañía) y nadie recordará por qué todo debe detenerse y reiniciarse en el medio de la noche.

Mi recomendación sería monitorear el proceso de SQL y reiniciar según sea necesario. Como se mencionó en un póster anterior, SQL no tiene la pérdida de memoria que la gente cree que tiene (y lo digo como una persona que estaba en el equipo de MSSQL a mediados de los 90). Usted quiere que su servidor de base de datos utilizar casi el 100% de memoria y CPU. Algo menos está desperdiciando recursos.

Art Taylor
fuente
0

Si tiene código mal escrito y pérdidas de memoria, entonces reiniciar puede ser la única forma de devolver la memoria asignada al grupo. Si tiene procesos vinculados a la memoria, esta actualización del grupo a un estado limpio ciertamente puede mejorar el rendimiento ... por un tiempo. Pero esta es realmente una mala manera de manejar los problemas de rendimiento, la causa real debe ser aclarada y reparada.

De lo contrario, déjelo correr hasta que necesite una ventana de mantenimiento para aplicar parches / aplicaciones / restaurar datos. Este podría ser un buen momento para sugerirle a un ingeniero de rendimiento que eche un vistazo a los servidores en cuestión para saber exactamente por qué / qué problemas están motivando esto.

James Pulley
fuente
0

Si bien no es una respuesta completa per se , ¿es una opción viable agregar más RAM al servidor? 4 GB es un poco bajo para una máquina IIS / SQL Server. Dependiendo de si es una unidad de servidor realmente dedicada o una computadora de escritorio presionada en el servicio, es posible que pueda obtener 8 GB o más por un costo bastante bajo. De acuerdo, si se trata de un servidor, puede costar un poco más que la RAM de escritorio estándar, pero le daría un poco más de tiempo entre reinicios forzados.

Dicho esto, vea si puede limitar SQL Server para usar un máximo del 80% de la RAM, o mire los registros para precisar exactamente qué está mal y / o por qué se detiene el servicio.

tombull89
fuente
0

Sin relación con el problema de SQL con el que puede estar lidiando si tiene servidores Windows y está siguiendo algún tipo de rutina de parches, reiniciará los servidores regularmente sin tener que reiniciar "solo porque". Cuando trabajé para "BIG MULTINATIONAL", se nos ordenó parchar mensualmente y, como tal, todos nuestros servidores se reiniciaron mensualmente al menos una vez.

Mitch
fuente
0

Estoy haciendo esto en 3 servidores, 1 es nuestro y 2 clientes. Lo configuré por varias razones: un servidor 2008R1 tiene muchas actualizaciones pendientes de instalación, pero no puedo instalarlas por lotes, así que lo instalo una por una todos los días; otro servidor 2012R2: para la solución de problemas de arranque y algunos problemas de rendimiento, etc. No creo que sea una mala práctica programar un reinicio periódico, desde el otro disco duro. Puede ayudar a rastrear varios problemas de hardware y software, especialmente aquellos que están involucrados en el inicio automático .

integratorIT
fuente
-2

Conozco una gran empresa que no solo reinicia sus servidores de Windows todas las noches, sino que algunos incluso se reinstalan cada 24 horas. Para ellos, es necesario por problemas de memoria en el software y problemas de seguridad.

Parece que algunas empresas se reinician cada 24 horas, aunque me parece extraño como administrador de Linux. Para que quede claro: nunca recomendaría hacer esto debido a un problema de memoria: rastrea el problema y resuélvelo.

Si el uso de su memoria se mantiene fijo en un 75% durante meses, entonces posiblemente no sea necesario reiniciar (es totalmente normal que una aplicación de servidor use toda la memoria disponible), aumenta mucho el rendimiento porque necesita menos discos de E / S si usa la RAM para almacenar en caché sus datos.

Subito
fuente
gracias @Subito. Bueno, en realidad soy un desarrollador web (no un administrador del servidor) pero actualmente necesito mantener un servidor. Es por eso que estoy haciendo estas simples preguntas. Creo que tienes razón. Pero me sorprende que haya compañías que hagan ese tipo de cosas. ¿No se benefician de ningún tipo de cobro del lado del servidor?
tugberk
Todas sus aplicaciones son auto escritas y están pensadas para usarse con DOS o 3.11. Se las arreglaron para obtener una base de datos más allá de estas aplicaciones y de alguna manera las portaron al Servidor 2008. Es un milagro que esto todavía esté funcionando. Nadie se volvería loco y trataría de alterar todo para usar cachés. Tienen algunas personas que están sentadas allí y esperando que algo se bloquee y luego reinician la aplicación / servidor / lo que sea.
Subito
66
No, no es "legítimo" reiniciar un servidor cada 24 horas. O bien tienen algún muy cuestión caso extremo o borde de su red y los servidores están siendo manejados por los idiotas más grandes en la profesión.
Rob Moir
sí, de hecho son los idiotas más grandes, pero no es la única compañía que conozco, que está haciendo esto con sus servidores de Windows ... Parece ser una forma bastante común de lidiar con problemas de memoria. - No me malinterpreten, ¡creo que es un error terrible, terrible, no investigar y resolver los problemas!
Subito
77
@Subito - En tu respuesta dices "Parece legítimo reiniciar cada 24 horas" Eso es simplemente un mal consejo. Le está diciendo al OP que es una idea legítima mientras hace referencia a una compañía que dice que está llena de idiotas con un software horrible. No me parece legítimo.
MDMarra