35 votes

SQLServer vs StateServer pour les performances d'état de session ASP.NET

J'étudie pour une certification MS et l'un des tests pratiques que je fais a une question où le point de discorde est la performance entre le stockage de la session dans SQL Server par opposition à StateServer.

Étant donné que l'application s'exécute dans une batterie de serveurs Web, quelle solution pour l'état de session donne les meilleures performances (SQL Server ou StateServer) et, surtout, pourquoi?

14voto

Colin Points 9465

Un peu, mais l'important note: InProc n'est pas utilisable dans une ferme, comme son nom l'indique, il s'exécute dans l'actuel processus w3wp et ne peuvent être partagées à travers une ferme. StateServer est un service Windows, de sorte que la vitesse de l'aide de StateServer est dependend sur la vitesse de la machine le stateserver service est en cours d'exécution, il est la mémoire. SQL a bien sûr besoin d'écrire les données et de les récupérer, ce qui est probablement plus lent que la mémoire.

À partir d' ici:

  • Dans processus. Dans le processus fonctionnera mieux parce que l'état de la session de la mémoire est conservée à l'intérieur de la ASP.NET processus. Pour les applications Web hébergés sur un seul serveur d'applications dans lesquelles l'utilisateur est assuré d'être re-dirigé vers le bon serveur, ou lorsque les données d'état de session n'est pas critique (dans le sens où il peut être re-construit ou re-rempli), c'est le mode à choisir.
  • En dehors du processus. Ce mode est utilisé au mieux lorsque la performance est importante, mais vous ne pouvez pas garantir le serveur auquel un utilisateur demande une application de. Avec out-of-process en mode, vous obtenez la performance de lecture de la mémoire et de la fiabilité d'un processus distinct qui gère l'état de tous les serveurs.
  • SQL Server. Ce mode est utilisé au mieux lors de la fiabilité des données est fondamentale pour la stabilité de l'application, la base de données peuvent être regroupées pour les scénarios de défaillance. La performance n'est pas aussi rapide que de processus, mais la différence est le niveau de fiabilité élevé.

11voto

Colin Mackay Points 9303

À partir de ce lien: http://www.eggheadcafe.com/articles/20021016.asp

Performance

  • InProc - plus Rapide, mais plus les données de session, plus de mémoire consommé sur le serveur web, et que peut affecter les performances.

  • StateServer - Lors du stockage des données de types de base (chaîne de caractères, entier, etc), dans un environnement de test, il est de 15% plus lent que InProc. Cependant, le coût de sérialisation/désérialisation peut affecter les performances si vous êtes le stockage beaucoup de objets. Que vous avez à faire des tests de performance pour votre propre scénario.

  • SQLServer - Lors du stockage des données de types de base (chaîne de caractères, entier, etc), dans un environnement de test, il est de 25% plus lent que InProc. Même avertissement à propos de l' la sérialisation comme dans StateServer.

Il semblerait que l'StateServer est un peu plus rapide que SQL Server pour le stockage de l'état de la session.

En termes de pourquoi, je suggère que le Serveur SQL est plus polyvalent et sera susceptible d'être utilisé pour d'autres choses aussi. Non seulement cela, mais le mécanisme de stockage est sur le disque, où, comme le StateServer est en cours d'exécution dans un processus séparé, mais elle est tout simplement de stocker les données dans l'espace de la mémoire des autres processus plutôt que d'avoir à écrire sur le disque (virtuel permettant de la mémoire)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X