Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10824[/thread]

Sessions



<< >> 4 Einträge, 1 Seite
Froschpopo
 2007-11-19 14:14
#102565 #102565
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich habe selbst ein Session-Modul gebaut. Jetzt würde mich folgendes interessieren: Wie würdet ihr die Sessions löschen, wenn sie in mySQL verwaltet werden? Ich möchte ein bisschen optimieren.

Meine bisherigen Schritte:
- Memory Storage Engine für die Sessions-Tabelle (bringt einen großen Leistungsvorteil)
- optimale Verteilung von Indexen
- Cachen des Datenbankhandle
- alles im Perl-Modul

Nun hatte ich noch die Idee, das löschen abgelaufender Sessions mittels einen Daemons zu erledigen der einmalig eine Verbindung zum mySQL Server aufbaut, diese aufrecht erhält und dann in einem Intervall veraltete Sessions löscht.

Eine andere Möglichkeit wäre, im Sessionmodul alle x-Requests ein e Prüfung vorzunehmen. Aber dann müsste ich irgendwie eine Pipe basteln die mit einem Server verbunden ist, der eine Art Counter darstellt (weil ich die Daten ungern auf die Festplatte cachen will).

Dritte Möglichkeit wäre ein Cronjob. Der würde dann aber jedesmal neu ausgeführ werden d.h. er müsste jedesmal ein connect machen und das handle erstellen.

Zur Information:
Es werden zur rush hour ca. 800 Sessions verwaltet, was theoretisch auch mit ner normalen tabelle zu bewältigen wäre. Aber ich möchte es möglich schnell haben.
Taulmarill
 2007-11-19 14:32
#102567 #102567
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
So wie ich das sehe, musst du sowieso jedes mal, wenn du eine Session lädst überprüfen, ob diese noch gültig ist. Das Aufräumen der Sessions würde ich in ein Zeitfenster legen, in dem dein Server wenig belastet wird.

Hast du dir mal die verfügbaren Perlmodule für Sessions angeschaut? Einen sehr schnellen Eindruck macht auf mich CPAN:Cache::FastMmap. Wenn du Catalyst verwendest kannst du auch gleich CPAN:Catalyst::Plugin::Session::FastMmap benutzen.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
renee
 2007-11-19 14:34
#102568 #102568
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Froschpopo+2007-11-19 13:14:26--

Dritte Möglichkeit wäre ein Cronjob. Der würde dann aber jedesmal neu ausgeführ werden d.h. er müsste jedesmal ein connect machen und das handle erstellen.


Und wo siehst Du da ein Problem?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Froschpopo
 2007-11-19 14:48
#102570 #102570
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Taulmarill+2007-11-19 13:32:45--
So wie ich das sehe, musst du sowieso jedes mal, wenn du eine Session lädst überprüfen, ob diese noch gültig ist. Das Aufräumen der Sessions würde ich in ein Zeitfenster legen, in dem dein Server wenig belastet wird.

Hast du dir mal die verfügbaren Perlmodule für Sessions angeschaut? Einen sehr schnellen Eindruck macht auf mich CPAN:Cache::FastMmap. Wenn du Catalyst verwendest kannst du auch gleich CPAN:Catalyst::Plugin::Session::FastMmap benutzen.



ja klar, muss ja im SELECT auch die Userdaten jedesmal einlesen. Aber das ist immernoch weniger, wie wenn ich bei jedem Request nach dem SELECT noch ein DELETE ausführe. Weil Session laden heisst ja nicht gleichzeitig auch, alte zu bereinigen.
<< >> 4 Einträge, 1 Seite



View all threads created 2007-11-19 14:14.