Esecuzione di SQL Server sul server Web
-
02-07-2019 - |
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.
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 :
- Fare clic con il tasto destro sull'istanza del server e fare clic su proprietà
- Seleziona 'memory' dall'elenco a sinistra
- 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.