Frage

Helo,

Ich habe eine Chat-Anwendung unter Verwendung von Comet umgesetzt. wird die Anforderung „hängen“ auf dem Server, bis neue Nachrichten arive. Es, dann kehrt an den Client mit den neuen Nachrichten, und geht an den Server erneut.

Mein Problem ist:

Um neue Nachrichten zu überprüfen, abfragen ich die Datenbank alle 600 ms. Ich führe eine einfache Abfrage „wählen ... von Nachrichten, bei denen messageId> '+ lastMessageId.

Darüber hinaus, um Präsenz zu erhalten, aktualisiere ich die Datenbank sehr (sehr) häufig mit jedem Benutzer "LastKeepAliveTime".

Das SQL Server-Transaktionsprotokoll wächst enorm, und an einem bestimmten Punkt, meine Chat-Anwendung nicht mehr funktioniert.

Die Chat-Benutzer sind Benutzer nicht registriert ist, sie sind nur zufällige Benutzer, die die Seite jederzeit verlassen können.

Dank Yaron

War es hilfreich?

Lösung

Könnten Sie ein gemeinsames Cache-Objekt für die letzten am Leben erhalten Informationen benutzen? Es scheint, wie seine eine kleine Menge an Informationen, und man konnte eine Menge von SQL-Updates vermeiden.

Andere Tipps

Hier ist, wie das Transaktionsprotokoll um zu verhindern, außer Kontrolle zu geraten: http://support.microsoft. com / kb / 873235

Optionen in diesem Artikel enthalten:

  • Doing ein Schrumpf.
  • Ändern der Protokollgröße.
  • Konfigurieren der automatischen Expansion.
  • Ändern der Wiederherstellungsmodell.
  • die Protokolldatei regelmäßig sichern.

und vieles mehr.

Als Seite beachten, kann es sich lohnen, eine Liste von Benutzern und deren letzte Aktivität Daten einrichten, die Sie speichern als Objekte in Ihrer Anwendung Zustand. Es würde schneller sein, um auf diese Weise Zugriff auf und man kann die Werte weniger häufig bestehen bleiben.

Der Wechsel von Vollmodus Transaktionsprotokoll einfachen Modus sollten Sie Ihre Log-Wachstumsprobleme lösen.

Aber ich möchte noch hinzufügen, dass es in der Regel eine gute Idee, Abfrage zu vermeiden, wenn Sie können, da es nicht skalierbar ist. Sie sollten erwägen zu einem ereignisgesteuerten Modell mit Service Broker oder SqlDependency wechseln. Es gibt auch andere Ansätze zur Keep-Alive auch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top