2009-12-13 6 views
0

Helo,Scrutation côté serveur Asp.Net Chat

J'ai implémenté une application de conversation en utilisant Comet. la demande est "se bloquer" sur le serveur jusqu'à ce que de nouveaux messages arive. Il retourne alors au client avec les nouveaux messages et retourne au serveur.

Mon problème est:

Afin de vérifier les nouveaux messages, je Pöll la base de données toutes les 600 ms. -je effectuer une requête simple « select ... à partir de messages où messageId> '+ lastMessageId.

En outre, afin de maintenir une présence, mettre à jour la base de données très (très) souvent à chaque utilisateur « LastKeepAliveTime ».

la transaction SQL Server journal est de plus en plus grande, et, à un certain moment, ma demande de chat cesse de fonctionner.

les utilisateurs de chat ne sont pas utilisateurs enregistrés, ils sont des utilisateurs juste au hasard qui peuvent quitter la page à tout

merci Yaron

Répondre

1

Il semble que c'est une petite quantité d'informations et vous pourriez éviter beaucoup de mises à jour SQL.

1

Voici comment garder le journal des transactions de sortir du contrôle: http://support.microsoft.com/kb/873235

Options dans cet article comprennent:

  • Faire un psy.
  • Modification de la taille du journal.
  • Configuration de l'expansion automatique.
  • Modification du modèle de récupération.
  • Sauvegarde régulière du fichier journal.

et plus.

En remarque, il peut être utile de configurer une liste d'utilisateurs et leurs dernières dates d'activité que vous stockez en tant qu'objets dans l'état de votre application. Il serait plus rapide d'accéder de cette façon et vous pourriez persister les valeurs moins fréquemment. Pourriez-vous utiliser un objet cache commun pour les dernières informations de maintien en vie?

0

Le passage du journal de transactions en mode complet au mode simple devrait résoudre les problèmes de croissance des journaux.

Cependant, je devrais ajouter aussi que c'est généralement une bonne idée d'éviter d'interroger si vous le pouvez, car ce n'est pas évolutif. Vous pouvez envisager de passer à un modèle piloté par événement à l'aide de Service Broker ou SqlDependency. Il y a aussi d'autres approches pour garder-alives.

Questions connexes