2008-12-09 7 views
1

Nous utilisons actuellement la base de données pour maintenir des informations d'état (dans un tableau séparé) pour l'utilisateur. Nous récupérons ces informations dans la base de données chaque fois que l'utilisateur accède à l'application (envoie une requête) et la restaure dans la base de données après le traitement de la requête.gestion de session pour une charge équilibrée site

Cela a très bien fonctionné pour nous dans beaucoup de nos projets et est très facile à mettre en œuvre, mais cela ajoute une surcharge pour appeler la base de données et enregistrer les informations d'état.

Existe-t-il d'autres moyens disponibles qui fonctionnerait mieux dans ce cas?

Répondre

2

Out-of-the-box, MS offre une StateServer mode. Cela vous permet de stocker des données de session en mémoire sur un seul serveur partagé par un ou plusieurs serveurs Web. Dans certains cas (si votre état de session SQL Server est sous charge importante), cela peut vous donner un coup de pouce.

Par défaut, le fournisseur de session SQL Server récupère et enregistre des éléments de session par article. Si vous connaissez l'utilisation de votre session et que cela semble inefficace (vous récupérez et enregistrez plusieurs éléments par requête), vous pouvez implémenter un SessionState Store Provider personnalisé sur SQL Server qui récupère tous les éléments de session au début de la requête et les enregistre tous à la fin de la requête. demande.

Autres ressources:

0

Il y a un certain nombre de stratégies. J'espère que votre session est collante (c'est-à-dire routée vers la même machine tout le temps qu'elle est levée). Dans ce cas, vous pouvez mettre les données en cache localement (en mémoire) et utiliser DB uniquement pour la sauvegarde ("écriture seule"). De plus, il existe des solutions comme memcached fournissant un cache distribué.

Questions connexes