Einzelnen Beitrag anzeigen

Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#6

AW: Schnelle DB / Dateibasierend

  Alt 2. Feb 2012, 11:14
Wieviel Einträge kommen den pro Sekunde?
Es kann eh nur eine Nachricht entgegen genommen werden. Wenn diese verarbeitet wurde wird die nächste angenommen. Morgens können schon mal 20.000 Nachrichten kommen. Diese dürfen sich dann aber nicht stauen und müssen alle der Reihe nach bearbeitet werden.

ADS?

Ist die Sekunde zu lang, weil dadurch der Hauptthread blockiert wird und daher keine Daten mehr ankommen?

In diesem Fall einfach die Datenbankoperationen in einen Thread auslagern (oder mehrere, jeweils mit einer Connection pro Client-Thread).

Und man kann die eintreffenden Daten erst mal in einer in-memory Queue speichern, um kurze Spitzenlasten abfangen zu können.

Sind es asynchrone Sockets, die die Haupt-Messageloop verwenden? Auch diesen Bereich könnte man in einen oder mehrere Hintergrundthreads auslagern, mit Indy oder Synapse und blockierenden Sockets wird es dann deutlich einfacher und performanter.
Es kann eh nur ein Auftrag entgegen genommen werden, siehe oben. Verwenden blockierende Sockets.

Kann die Daten aber auch nicht zwischenspeichern oder in einer Queue speichern. Wenn der Rechner abschmiert gehen eventuell 200 Einträge verloren.
  Mit Zitat antworten Zitat