Pregunta

¿Es bueno, malo o indiferente ejecutar SQL Server en su servidor web?

Estoy usando Server 2008 y SQL Server 2005, pero no creo que eso importe en esta pregunta.

¿Fue útil?

Solución

Para sitios pequeños, no hace la menor diferencia.Sin embargo, a medida que la carga crece, esto escala muy mal y más rápido de lo que piensas:

  • Los servidores de bases de datos se basan en la premisa de que son "dueños" del servidor.Cambian memoria por velocidad y utilizan fácilmente toda la RAM disponible para el almacenamiento en caché interno.
  • Una vez que los recursos empiezan a escasear, la elaboración de perfiles se vuelve muy difícil: está claro que tanto IIS como SQL están sufriendo, pero no está tan claro dónde está el cuello de botella.IIS necesita CPU, SQL Server necesita RAM o CPU, etc., etc.
  • No importa cuántas capas pongas en tu código, todo se ejecuta en la misma CPU, por lo tanto, una aplicación de una sola capa se ejecutará mejor en este contexto (menos gastos generales) pero no escalará.
  • La seguridad es realmente mala, ¡normalmente aíslas SQL detrás de un firewall!

Si puede permitírselo, probablemente sea mejor desembolsar unos cuantos dólares y conseguir un segundo servidor, tal vez usando PostgreSQL.Un servidor IIS y un PostgreSQL cuestan aproximadamente tanto como IIS + SQL Server debido a los costos de licencia...

Otros consejos

Las tiendas más grandes probablemente no considerarían esto como una buena práctica...Sin embargo, si no está lidiando con cientos de solicitudes por segundo, puede ponerlas ambas en un solo cuadro.

De hecho, para aplicaciones pequeñas, verá un mejor rendimiento en el back-end porque los datos no tienen que atravesar el cable.Se trata de escala.

Tenga en cuenta que los servidores de bases de datos consumen memoria.Aquí hay una lección importante de la escuela de los golpes duros: Si decide ejecutar SQL Server 2005 en la misma máquina que su servidor web (y esa es la configuración que mencionó en su pregunta), asegúrese de ingresar a Sql Server Management Studio y hacer esto.:

  1. Haga clic derecho en la instancia del servidor y haga clic en propiedades
  2. Seleccione 'memoria' de la lista de la izquierda
  3. Cambie la 'memoria máxima del servidor' por algo que su servidor pueda soportar.

Si no lo hace, SQL Server eventualmente consumirá toda la RAM de su servidor y la conservará indefinidamente.Esto hará que su servidor falle más o menos y muera.Si no eres consciente de esto, puede ser Muy frustrante para solucionar problemas.

He hecho esto bastantes veces.No es algo que harías si tuvieras la infraestructura de una gran corporación y no escalara, pero está bien para muchas cosas.

Realmente todo se reduce a cuánto trabajo están haciendo su servidor web y su servidor SQL.

Sin más información, dudo que obtenga respuestas útiles.

Yo diría que es mejor ejecutarlos en el mismo servidor hasta que se convierta en un problema.De esa manera, se ahorrará algo de dinero y tiempo por adelantado.Una vez que el sitio sea un éxito y requiera algunos cambios arquitectónicos, ya debería haberse amortizado.

Recuerda hacer una copia de seguridad :)

Si su servidor web es de acceso público, es una MUY mala idea desde el punto de vista de la seguridad.

Aunque dificulta muchas cosas desde enrutamiento, firewall, puertos, autenticación, etc.perspectiva, la separación es buena.Cuando tiene su servidor de base de datos ejecutándose en el servidor web, si su servidor web está comprometido, entonces su servidor SQL también lo estará.

Cuando los tienes en cajas separadas, has subido un poco el listón.

Todavía queda mucho trabajo por hacer para proteger su servidor web Y su servidor de base de datos, pero ¿por qué hacerlo más fácil de lo necesario?

Dependerá de la carga esperada del servidor.Para sitios pequeños, no supone ningún problema (si se configura correctamente).Para sitios grandes, es posible que desee considerar distribuir la carga entre diferentes servidores:servidor web, servidor de archivos, servidor de bases de datos, etc.

He visto este problema una y otra vez.La respuesta correcta es poner SQL Server en una máquina y IIS (servidor web) en la otra.Su dinero irá a la máquina SQL Server porque se debe comprar el sistema de disco y la RAM adecuados para admitir un servidor eficiente, pero el servidor web puede ser una máquina mucho más reducida y menos costosa con solo un conjunto de unidades reflejadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top