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.
Respuestas:
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.
fuente
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.
fuente
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.
fuente
Si tiene pérdidas de memoria significativas, entonces, por qué no; de lo contrario, reinicie mensualmente con actualizaciones.
fuente
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
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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 .
fuente
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.
fuente