Lange Reaktionszeit für Mage_Core_Model_Session_Abstract_Varien :: start

15

Daher habe ich in New Relic auf vielen unserer Websites bemerkt, dass viele unserer langen Seiten aufgrund von Mage_Core_Model_Session_Abstract_Varien :: start geladen werden. Ich habe einige Nachforschungen angestellt und noch niemanden gesehen, der darüber gesprochen hat.

Wir verwenden Nginx, PHP FPM, Redis für Caching und Memcache für Sitzungen. Einige meiner Ideen sind, dass es vielleicht etwas anderes ist, das ewig dauert, und es scheint nur, dass das Laden der Sitzung das Problem ist. Oder es gibt einen benutzerdefinierten Code, der der Sitzung viele Daten hinzufügt, was zu großen Sitzungen führt.

Ich kenne mich in Bezug auf Sitzungen und deren Verwaltung nicht so gut aus, habe jedoch einige Artikel über Sitzungssperren gefunden. Ich glaube jedoch nicht, dass die Leute gleichzeitig so viele Seiten öffnen würden.

Einige dieser Ladevorgänge dauern zwischen 20 und 30 Sekunden. Ich bin nur neugierig, ob jemand anderes dies bemerkt hat oder mehr darüber weiß, wie man diese Art von langen Anfragen aufgrund von Sitzungen analysiert.

dan.codes
quelle
1
Ich habe das gleiche Verhalten bei Redis festgestellt, das als Sitzungsspeicher verwendet wird. Keine Ahnung, warum es passiert.
2
Konnten Sie die Ursache dafür schon ausfindig machen? Ich habe ein sehr ähnliches Setup (Redis für Cache, Memcached für Sessions) und wir haben kürzlich damit begonnen, New Relic zu verwenden, um die Leistung zu verfolgen. Wir stellen über 20 Sekunden lange Spuren fest, die auf etwas in MCMSAV :: start zurückzuführen zu sein scheinen, wie Sie gesehen haben. Leider kann ich nicht genauer darauf eingehen. In einem Tooltipp heißt es: "Eine genauere Sichtbarkeit ist nicht verfügbar, da diese Klassen und Methoden nicht mit der aktuellen Konfiguration des PHP-Agenten instrumentiert sind." Ich muss noch weiter nachforschen. Irgendwelche Ideen?
BrianVPS
1
@ BrianVPS Ich habe nie etwas gefunden. Es bleibt mir ein Rätsel und ich hatte nie mehr Zeit, es aufzuspüren. Ich sehe es immer noch in jedem Projekt. Hast du jemals etwas gefunden?
Dan.Codes
1
Ich weiß nicht, ob wir irgendwelche Ursachen gefunden haben, aber ich habe das in letzter Zeit nicht gesehen. Wir haben die Website erheblich verändert und viel Fett abgeschnitten. Ich habe einige nicht verwendete Kernmodule deaktiviert und eine Menge nicht verwendeter Attribute, Kategorien und Produkte gelöscht. Seitdem sind die Dinge an allen Fronten verbessert. Ich weiß nicht, ob irgendetwas damit zusammenhängt, aber im Allgemeinen scheint es Magento erheblich zu helfen, unnötige Dinge loszuwerden. Es ist ein leistungsfähiges, aber aufgeblähtes System mit viel Code, den viele Websites nicht benötigen. Den Überschuss loszuwerden ist sehr hilfreich.
BrianVPS
@BrianVPS Ich habe genau das gleiche Problem, das Sie hatten (über 20 Sekunden lange Spuren, die anscheinend durch etwas in MCMSAV :: start verursacht wurden). Haben Sie eine Lösung gefunden?
Denis Spalenza

Antworten:

7

Dies hängt höchstwahrscheinlich mit einem Phänomen in Bezug auf Dateisystemsitzungen zusammen. Ungeachtet dessen, was Sie über die Verwendung von Mecached für Sitzungen melden, habe ich dies selbst nur gesehen, als ich tatsächlich das Dateisystem verwendet habe.

Dies wurde zuvor hier behandelt:

/magento//a/3721/336

In der Tat zeigt ein Screenshot eines Cachegrinds den genauen Zeitpunkt, zu dem der Sitzungsstart übermäßig viel Zeit in Anspruch nimmt, Mage_Core_Model_Session_Abstract_Varien::startwie Sie richtig ausgeführt haben:

Bildbeschreibung hier eingeben

In dem Thread, auf den verwiesen wird, gab es den Vorschlag, dass dieser Effekt mit einem In-Memory-Sitzungsspeicher verringert werden könnte - aber es gibt keine konkreten Daten, von denen ich weiß, dass sie die Theorie stützen. Wenn Sie tatsächlich memcached verwenden, ist es naheliegend, dass die Sitzungssperre auf PHP-Ebene verhindert, dass zukünftige Anforderungen an den Sitzungsspeicher gewährt werden, bis die Sperre aufgehoben wird.

Im Allgemeinen tritt dies nur bei Anforderungen auf, für die Zugriff auf Sitzungsinformationen erforderlich ist. Die Architektur Ihres Frontend-Themas kann daher hilfreich sein, um die erforderliche Zugriffsmenge zu begrenzen, um potenzielle Sperren zu vermeiden, wenn ein Benutzer bei der Entscheidung über einen anderen Tab oder eine andere Anforderung mit langer Laufzeit verfügt wegziehen.

HTH, Prost.

Philwinkle
quelle