Domanda

È corretto, errato o indifferente eseguire SQL Server sul server Web?

Sto usando Server 2008 e SQL Server 2005, ma non credo che questo sia importante per questa domanda.

È stato utile?

Soluzione

Per i siti di piccole dimensioni, non fa alcuna differenza. Con l'aumentare del carico, tuttavia, questo si ridimensiona davvero molto più velocemente di quanto pensi:

  • I server di database sono basati sul presupposto che "possiedono" il server. Scambiano memoria per la velocità e usano facilmente tutta la RAM disponibile per la memorizzazione nella cache interna.
  • Una volta che le risorse iniziano a scarseggiare, la profilazione diventa molto difficile: è chiaro che IIS e SQL soffrono entrambi, meno chiaro dove si trovi il collo di bottiglia. IIS ha bisogno di CPU, SQL Server ha bisogno di RAM o CPU ecc ecc.
  • Indipendentemente dal numero di livelli inseriti nel codice, tutto funziona sulla stessa CPU, quindi una singola applicazione a più livelli funzionerà meglio in questo contesto - meno sovraccarico - ma non si ridimensionerà.
  • La sicurezza è davvero pessima, di solito si isola SQL dietro un firewall!

Se te lo puoi permettere, probabilmente è meglio sborsare qualche soldo e ottenere un secondo server, magari usando PostgreSQL. Un server IIS e un PostgreSQL costano circa quanto su IIS + SQL Server a causa dei costi di licenza ...

Altri suggerimenti

Probabilmente i negozi più grandi non lo considererebbero una buona pratica ... Tuttavia, se non hai a che fare con centinaia di richieste al secondo, stai bene mettendole entrambe su una scatola.

In effetti, per le piccole app, vedrai prestazioni migliori sul back-end perché i dati non devono passare attraverso il cavo. Riguarda la scala.

Tieni presente che i server di database consumano memoria. Ecco un'importante lezione della scuola dei colpi duri: se decidi di eseguire SQL Server 2005 sullo stesso computer del tuo server web (e questa è la configurazione che hai menzionato nella tua domanda), assicurati di andare in Sql Server Management Studio e farlo :

  1. Fare clic con il tasto destro sull'istanza del server e fare clic su proprietà
  2. Seleziona 'memory' dall'elenco a sinistra
  3. Cambia la "memoria massima del server" in qualcosa che il tuo server può supportare.

Se non lo fai, SQL Server alla fine occuperà tutta la RAM del tuo server e si bloccherà indefinitamente. Ciò farà sì che il tuo server si sputi e muoia più o meno. Se non sei a conoscenza di ciò, può essere molto frustrante risolvere i problemi.

L'ho fatto parecchie volte. Non è qualcosa che faresti se avessi l'infrastruttura di una grande azienda e non si ridimensiona, ma va bene per molte cose.

Dipende da quanto lavoro stanno facendo il tuo server web e il tuo server sql.

Senza ulteriori informazioni dubito che otterrai risposte utili.

Direi che è meglio eseguirli sullo stesso server fino a quando non diventa un problema. In questo modo risparmierai denaro e tempo in anticipo. Una volta che il sito diventa un successo e richiede alcune modifiche architettoniche, dovrebbe già aver pagato per sé.

Ricorda di eseguire il backup :)

Se il tuo server web è accessibile pubblicamente, questa è un'idea MOLTO negativa dal punto di vista della sicurezza.

Anche se rende molte cose più difficili dal punto di vista del routing, firewall, porte, autenticazione, ecc., la separazione è buona. Quando il tuo server di database è in esecuzione sul server Web, se il tuo server Web è compromesso, lo è anche il tuo server sql.

Quando li hai in scatole separate, hai alzato leggermente la barra.

C'è ancora molto lavoro da fare per proteggere il tuo server Web E il tuo database server, ma perché renderlo più semplice di quanto debba essere?

Dipenderà dal carico previsto del server. Per i siti di piccole dimensioni, non è affatto un problema (se configurato correttamente). Per i siti di grandi dimensioni, potresti prendere in considerazione la distribuzione del carico su server diversi: server Web, file server, database server, ecc.

Ho visto questo problema ancora e ancora. La risposta giusta è mettere SQL Server su una macchina e IIS (web server) sull'altra. I tuoi soldi andranno nella macchina di SQL Server perché il giusto sistema di azionamento e RAM devono essere acquistati per supportare un server efficiente ma il web server può essere molto ridimensionato & amp; macchina meno costosa con solo un set di unità con mirroring.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top