Seltsames Session-Problem

donpaolo

Grünschnabel
Guten Tag @all,

wir haben ein Problem, bei dem wir einfach nicht weiterkommen. Ich habe dazu bereits in einem anderen Forum einen Thread eröffnet (http://phpforum.de/forum/showthread.php?t=279899), aber die Vorschläge zur Fehlersuche haben uns leider nicht weitergebracht. Ich bitte daher um Nachsicht, wenn ich das Problem hier noch einmal beschreibe, in der Hoffnung, dass jemand eine Idee für eine Lösung hat.

Seit einiger Zeit gehen bei einer unserer Anwendungen ab und zu scheinbar Sessions verloren. Ein Schema ist nicht auszumachen. Es passiert an allen möglichen Stellen. In 99,9 % der Fälle tritt kein Fehler auf.

Es Handel sich um eine sehr umfangreiche Anwendung (über 7.000 PHP-Seiten). Am Quellcode wurde seit das Problem auftritt nichts geändert. PHP läuft bei uns unter IIS 7.5 und Windows Server 2008.

Folgendes haben unsere Recherchen bisher ergeben:

Die Session-ID wird ordnungsgemäß aus dem Cookie übergeben. Die Session-Dateien, die betroffen sind, sind entweder nicht mehr vorhanden oder leer oder es fehlen Daten. Dabei sieht es so aus, als ob die Daten gelöscht wurden, denn die Dateistruktur sieht korrekt aus.

Der unset-Befehl wird aber in der gesamten Anwendung erst beim Ausloggen des Users benutzt.

Das Session Lockung funktioniert.

Die Sessions werden auf einem SAN gespeichert. Wir haben sie aber bereits ohne Erfolg temporär auf einer internen Festplatte gespeichert.

Hat jemand eine Idee für die Ursachensuche?

Herzliche Grüße

Paul
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

du solltest im anderen Forum vielleicht auch erwähnen, dass du deine Frage hier erneut gestellt hast.
http://phpforum.de/forum/showthread.php?t=279899&page=2 hat gesagt.:
Wir schreiben seit gestern in eine phperror.log nicht nur die Seiten, auf denen der Fehler auftritt, sondern auch die Referenzadresse der Seite, woher der User gekommen ist. Diese ist jedoch meistens leer. Das wundert mich, da ich mir nicht vorstellen kann, dass User dermaßen häufig versuchen, eine bestimmte URL der Anwendung direkt aufzurufen. In dem Fall wäre es natürlich kein Session-Fehler sondern der gewünschte Effekt.
Woher bekommst du die Referenzadresse? Meinst du HTTP_REFERRER? Es gibt keine Garantie, dass dieser Header an den Server geschickt wird.
 
du solltest im anderen Forum vielleicht auch erwähnen, dass du deine Frage hier erneut gestellt hast.

Woher bekommst du die Referenzadresse? Meinst du HTTP_REFERRER? Es gibt keine Garantie, dass dieser Header an den Server geschickt wird.

Danke für den Hinweis. Das werde ich tun.

Bzgl. der Referenzadresse: Wir haben zwischenzeitlich ein Formular in die Seite mit der Fehlermeldung eingebaut, damit die User uns weitere Infos geben können, was sie vorher getan haben. Mit dem Formular wird auch die Referenzadresse ausgegeben. In diesem Fall ist sie meistens vorhanden, bringt uns aber leider auch nicht weiter, abgesehen von der Erkenntnis, dass die User oft eine Adresse aufrufen, ohne eingeloggt zu sein (z. B. über ein Lesezeichen). In dem Fall ist es natürlich kein Fehler. Aber der Fehler tritt leider auch auf den unterschiedlichsten Seiten nach dem Login auf. Zwar sehr selten, aber bei ca. 3.500 Usern täglich (davon 2.500 concurrent), die im Schnitt 4 Stunden online sind, kommen einige Fehler zusammen.
 
Vielleicht surfen diese User privat/anonym ?
Das soll eben genau das verhindern, dass die Server das auslesen können ;)
 
Vielleicht surfen diese User privat/anonym ?
Das soll eben genau das verhindern, dass die Server das auslesen können ;)

Das könnte natürlich sein, aber das Ermitteln der Referenzadresse sollte uns ja nur bei der Fehlersuche helfen.

Die eigentliche Frage lautet: Warum "verschwinden" Sessions an den unterschiedlichsten Stellen, obwohl der Fehler in 99 % der Fälle nicht passiert?-
 
Habt Ihr eure Applikation auch mal komplett auf einem lokalen Server automatisiert getestet? Das Automatisieren wäre nicht schwer: Ein Skript, welches wahllos die Seite bedient (z. B. per cURL) und prüft, ob das bestehende Cookie erhalten bleibt.
 
Wie sieht es mit der Konfiguration von PHP aus? Ist vielleicht ein bekloppter Ansatz, aber womöglich sind entsprechende Max-Lifetimes für session.cookie_liefetime & session.gc_maxlifetime [http://php.net/manual/de/session.configuration.php] gesetzt und die Session des Benutzers läuft schlichtweg irgendwann bei Nichtstun aus.
Vielleicht kannst du mal die Ausgabe eines phpinfo() hier reinwerfen, womöglich fällt ja jemanden was auf.

Habt ihr schon irgendwelche hilfreichen Rückmeldungen der User erhalten? Konntet ihr das Problem schonmal selbst nachstellen oder habt ihr nur die Meldungen der User? Wisst ihr welche Browser in den Fällen genutzt wurden?
Könnten evtl. irgendwelche automatischen Aufräumarbeiten auf dem Server laufen (bei 2,5k Usern kommen da schnell einge Daten zusammen – da es scheinbar mehr Applikation als Website ist, wird sicher auch ziemlich viel an Zeug in die Session geworfen).

Ansonsten fällt mir da nichts zu ein. Wäre aber nett, wenn du uns über den weiteren Verlauf und auch eure Ansätze auf dem Laufen halten könntest. Ich hatte auch schonmal so-ein-kurioses-Session-Dings was ich auf Teufel komm raus nicht gelöst bekommen habe...
 
Vielleicht kannst du mal die Ausgabe eines phpinfo() hier reinwerfen, womöglich fällt ja jemanden was auf.

s. Screenshot. Die session.gc_maxlifetime funktioniert wie eingestellt. Aufräumarbeiten laufen nur nachts.

Die Userrückmeldungen waren leider nicht besonders hilfreich. Sie zeigen nur, dass das Problem an de verschiedensten Stellen auftritt. Alle Browser sind betroffen. Daran kann es also auch nicht liegen.

Wir bleiben dran und ich werde mich auf jeden Fall melden, wenn wir die Ursache finden.
 

Anhänge

  • Session.jpg
    Session.jpg
    104,2 KB · Aufrufe: 10
Zurück