Question

Est-il bon, mauvais ou indifférent d’exécuter SQL Server sur votre serveur Web?

J'utilise Server 2008 et SQL Server 2005, mais je ne pense pas que cela compte pour cette question.

Était-ce utile?

La solution

Pour les petits sites, cela ne fait pas une petite différence. Cependant, à mesure que la charge augmente, les choses évoluent très vite et plus vite que vous ne le pensez:

  • Les serveurs de base de données sont construits sur le principe qu'ils "possèdent" " le serveur. Ils échangent de la mémoire pour la vitesse et utilisent facilement toute la RAM disponible pour la mise en cache interne.
  • Une fois que les ressources commencent à être rares, le profilage devient très difficile: il est clair qu'IIS et SQL souffrent tous les deux, moins clairement où se situe le goulot d'étranglement. IIS a besoin de CPU, SQL Server a besoin de RAM ou de CPU, etc.
  • Quel que soit le nombre de couches que vous avez insérées dans votre code, tout s’exécute sur le même processeur. Par conséquent, une application à couche unique fonctionnera mieux dans ce contexte - moins de frais généraux - mais sans mise à l’échelle.
  • La sécurité est vraiment mauvaise, vous isolez généralement SQL derrière un pare-feu!

Si vous pouvez vous le permettre, il est probablement préférable de débourser quelques dollars et d’avoir un deuxième serveur, peut-être en utilisant PostgreSQL. Un serveur IIS et un PostgreSQL coûtent environ autant que sur IIS + SQL Server en raison des coûts de licence ...

Autres conseils

Les grands magasins ne considéreraient probablement pas cela comme une pratique exemplaire. Toutefois, si vous ne gérez pas des centaines de demandes par seconde, vous pouvez les placer toutes les deux sur une boîte.

En fait, pour les petites applications, les performances du back-end sont meilleures car les données ne doivent pas nécessairement passer par le fil. Tout est question d'échelle.

N'oubliez pas que les serveurs de base de données consomment de la mémoire. Voici une leçon importante tirée de l'école des coups durs: si vous décidez d'exécuter SQL Server 2005 sur le même ordinateur que votre serveur Web (et c'est la configuration que vous avez mentionnée dans votre question), assurez-vous que vous accédez à Sql Server. Management Studio et procédez ainsi :

  1. Cliquez avec le bouton droit de la souris sur l'instance du serveur, puis sur les propriétés
  2. Sélectionnez "mémoire" dans la liste de gauche
  3. Changez la "mémoire maximale du serveur" en un support que votre serveur peut gérer.

Si vous ne le faites pas, SQL Server prendra éventuellement toute la mémoire vive de votre serveur et y restera accroché indéfiniment. Cela provoquera plus ou moins de sputter et de mort sur votre serveur. Si vous ne le savez pas, il peut être très frustrant de résoudre ce problème.

Je l'ai fait plusieurs fois. Ce n’est pas quelque chose que vous feriez si vous disposiez de l’infrastructure d’une grande entreprise et que celle-ci n’évolue pas, mais c’est acceptable pour beaucoup de choses.

Cela dépend vraiment du travail de votre serveur Web et de votre serveur SQL.

Sans plus d'informations, je doute que vous obtiendrez des réponses utiles.

Je dirais qu'il était préférable de les exécuter sur le même serveur jusqu'à ce que cela devienne un problème. De cette façon, vous gagnerez du temps et de l'argent. Une fois que le site devient un succès et nécessite quelques modifications architecturales, il devrait déjà être rentabilisé.

N'oubliez pas de sauvegarder :)

Si votre serveur Web est accessible au public, il s'agit d'une TRES mauvaise idée du point de vue de la sécurité.

Bien que cela rende beaucoup de choses plus difficiles du point de vue du routage, du pare-feu, des ports, de l'authentification, etc., la séparation est bonne. Lorsque votre serveur de base de données s'exécute sur le serveur Web, si votre serveur Web est compromis, votre serveur SQL l'est également.

Lorsque vous les avez sur des boîtes séparées, vous avez légèrement relevé la barre.

Il reste encore beaucoup de travail à faire pour sécuriser votre serveur Web ET votre serveur de base de données, mais pourquoi le rendre plus facile que nécessaire?

Cela dépendra de la charge attendue du serveur. Pour les petits sites, ce n'est pas un problème (s'il est correctement configuré). Pour les grands sites, vous pouvez envisager de répartir la charge sur différents serveurs: serveur Web, serveur de fichiers, serveur de base de données, etc.

J'ai vu ce problème maintes et maintes fois. La bonne réponse est de mettre SQL Server sur une machine et IIS (serveur Web) sur l’autre. Votre argent ira à la machine SQL Server car le système de disque et la mémoire RAM appropriés doivent être achetés pour prendre en charge un serveur efficace, mais le serveur Web peut être beaucoup plus réduit. machine moins chère avec juste un jeu d’entraînement en miroir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top