sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuándo puedo alojar IIS y SQL Server en la misma máquina?

No es aconsejable ejecutar SQL Server con any otro producto, incluida otra instancia de SQL Server. El motivo de esta recomendación es la naturaleza de cómo SQL Server utiliza los recursos del sistema operativo. SQL Server se ejecuta en una infraestructura de administración de memoria y programación de procesadores en modo usuario llamada SQLOS . SQL Server está diseñado para ejecutarse al máximo rendimiento y asume que es el único servidor en el sistema operativo. Como tal, el sistema operativo SQL reserva toda la RAM en la máquina para el proceso SQL y crea un programador para cada núcleo de CPU y asigna tareas para que se ejecuten todos los programadores, utilizando toda la CPU que puede obtener, cuando la necesita. Debido a que SQL reserva toda la memoria, otros procesos que necesitan memoria harán que SQL vea presión de memoria , y la respuesta a la presión de la memoria expulsará las páginas del grupo de búfer y los planes compilados de la memoria caché del plan. Y dado que SQL es el único servidor que realmente aprovecha la memoria notificación API (hay rumores de que el próximo Exchange también lo hará), SQL es el único proceso que en realidad se reduce para dar espacio a otros procesos (como grupos de ASP con errores y fugas). Este comportamiento también se explica en BOL:Administración de memoria dinámica .

Un patrón similar ocurre con la programación de la CPU donde otros procesos roban tiempo de CPU de los programadores de SQL. En los sistemas de gama alta y en las máquinas Opteron, las cosas empeoran porque SQL usa NUMA localidad para aprovechar al máximo, pero ningún otro proceso generalmente no es consciente de NUMA y, por mucho que el sistema operativo intente preservar la localidad de las asignaciones, terminan asignando toda la RAM física y reducen el rendimiento general del sistema como las CPU están inactivos esperando el acceso a la página de límites entre números. También hay otras cosas a considerar como TLB y el error L2 aumenta debido a que otros procesos ocupan ciclos de CPU.

En resumen, puede ejecutar otros servidores con SQL Server, pero no se recomienda. Si debe , luego asegúrese de aislar los dos servidores lo mejor que pueda. Usar máscaras de afinidad de CPU para ambos SQL e IIS/ASP para aislar los dos en núcleos separados, configure SQL para reservar menos RAM para que deje memoria libre para IIS/ASP, configure sus grupos de aplicaciones para reciclar agresivamente para evitar el crecimiento del grupo de aplicaciones.