Live-Site leer im Frontend oder weiterhin laden und nie laden


23

Ich stehe vor dem seltsamsten Problem in Magento. Wir verwenden die Version 1.9.0.

Von den letzten 2 Monaten ist unsere Live-Site für die verwendeten Browser "leer" oder "lade weiter". In diesem Browser haben wir die Website häufig besucht.

In einigen Browsern funktioniert es einwandfrei. in einigen zeigt leer.

Aber das Backend funktioniert in allen Browsern einwandfrei.

Wir haben Probleme mit Chrome, Mozilla, Opera und allen anderen Browsern.

1) Wenn wir den Browserverlauf [Cache und Cookies] löschen, funktioniert er.

2) Wenn wir die gleiche Seite in einem privaten Fenster öffnen, funktioniert es.

3) Wenn wir die Site in frisch installierten Browsern öffnen, funktioniert sie einige Zeit. wieder leer, nachdem wir die Seite benutzt haben.

4) Wenn wir den Ordner var / session löschen, funktioniert er für einige Zeit für alle Browser. Wieder Website leer.

5) Manchmal wird die Seite weiter geladen und sie wird niemals geladen ...

Ich habe system.log & exception.log überprüft . aber es scheint keine damit verbundenen Fehler zu geben. Wir verwenden https für sichere Seiten. Sogar wir haben Live Andriod App für diese Seite. Manchmal treten schwerwiegende Fehler auf:

**Fatal error**: Allowed memory size of 536870912 bytes exhausted (tried to allocate 85 bytes) in /lib/Zend/Db/Statement/Pdo.php or lib/Varien/Object.php or /lib/Varien/Db/Select.php or app/code/core/Mage/Core/Model/Config.php

wir setzen memory_limit = 1512 Mb in der php.ini

In .htaccess haben wir folgende Dateien.

php_value memory_limit 1512M php_value max_execution_time 18000

das haben wir kommentiert:

ini_set('display_errors', 1);

aber keine fehleranzeige im frontend. Dies ist ein Apache-Fehlerprotokoll :

child pid 23845 exit signal Segmentierungsfehler (11), möglicher Coredump in / etc / apache2

Wirklich zu kämpfen, um dieses Problem zu lösen. Hat dieses Problem mit unserem Code zu tun, oder hat dieses Problem mit der Serverseite zu tun?

ist Browser-Cookie das Hauptproblem? Wenn ja, was müssen Sie tun, um dieses Cookie-Problem für alle Browser zu lösen? Warum funktioniert es, sobald wir den Sitzungsordner gelöscht haben?

Diese Probleme treten beim Surfen auf unserer Website auf. Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben


ist es möglich, dass es sich um ein Cookie handelt? stackoverflow.com/questions/15491819/…
pzirkind

Der Link, den ich eingefügt habe, ist für das Backend, aber das Frontend hat möglicherweise auch ein Cookie-Problem ...
Dies

@pzirkind in unserem Fall Backend ist in Ordnung für alle Browser. als müssen wir die Lebensdauer von Cookies durch Code erhöhen? und ich habe nicht über Timestamp des Servers ist ausgeschaltet. Müssen wir es schaffen?
Baby in Magento

@Babby in Magento Manchmal, wenn der Server nicht über den richtigen Zeitstempel verfügt, wird ein Cookie generiert, das vor dem aktuellen Datum abläuft. Wenn der Kunde die Site neu lädt und Magento das Cookie überprüft, ist es ungültig
pzirkind

@pzirkind Gibt es eine Möglichkeit, dass ein in Frage gestellter Apache-Fehler oder ein Zeitstempel der Grund für diese leere Seite ist?
Baby in Magento

Antworten:


10

Aktivieren Sie zunächst den Entwicklermodus in Ihrer .htaccessDatei und fügen Sie am Ende der Datei Folgendes hinzu:

SetEnv MAGE_IS_DEVELOPER_MODE "true"

Bearbeiten index.phpund kommentieren Sie als nächstes die Zeile:

#ini_set('display_errors', 1);

Zeile referenziert:

Melden Sie sich als nächstes über SSH an und suchen Sie eine Core-Dump-Datei unter /tmpdem angegebenen Segmentfehler. Manchmal kann es auch in der Wurzel sein /oder im Stammverzeichnis der Website selbst zum Beispiel: /var/www/html/videomergerapp/.

Wenn Sie keine Core-Dump-Dateien finden können, möchten Sie möglicherweise einige zusätzliche Direktiven zu PHP / Apache hinzufügen.

Schauen Sie sich hier um:

Sobald Sie die Core-Dump-Datei (en) haben, können Sie gdb(wenn --enable-debug) verwenden, wenn PHP konfiguriert wurde. Sie können diese Bestimmung vornehmen, indem Sie Folgendes über die Befehlszeile eingeben:

php -i | grep debugOder erstellen Sie einfach eine PHP-Skriptdatei in Ihrem Webserver-Stammverzeichnis mit: <?php phpinfo(); ?>und zeigen Sie die Datei über den Webbrowser an, um die PHP-Konfigurationswerte anzuzeigen.

Wenn es nicht aktiviert ist, können Sie keinen vollständigen Backtrace in PHP selbst erhalten, sondern nur Systemaufrufe auf höherer Ebene und / oder Apache-Backtrace:

Wenn Sie Zugriff auf die Core-Dump-Datei haben und etwas wie das Folgende eingeben, erhalten Sie eine Rückverfolgung, um die Fehlerursache zu ermitteln:

gdb /usr/local/apache2/bin/httpd /tmp/core.2027


Wenn Sie nur zufällige Probleme im Frontend und niemals im Backend feststellen, deuten die meisten Anzeichen auf ein mögliches Problem mit Ihrer Vorlagencodierung hin. Sobald Sie die leeren Seiten erfahren (und / oder Fehler angezeigt, wenn Sie Entwicklermodus und Fehleranzeige aktiviert haben). Melden Sie sich bei Ihrem Administrator an und deaktivieren Sie alle Caches und Cache-Speicher.

Gehen Sie dann zu app/etc/local.xmlund setzen Sie die deaktivierten lokalen Module auf true.

<disable_local_modules>true</disable_local_modules>

Dadurch wird der Auto Loader daran gehindert, Module zu laden app/code/local.

Um Community-Module zu deaktivieren, ist es am einfachsten, die einzelnen app/etc/modulesModuldefinitionsdateien zu durchsuchen und zu deaktivieren, indem Sie den aktiven Knoten wie folgt auf false setzen:

<active>false</active>

Auf diese Weise können Sie ausschließen, ob ein Modul eines Drittanbieters die Ursache des Problems durch den Prozess der Beseitigung verursacht. HINWEIS: Sie können nicht disable_local_modulesalle NON-CORE- Module durchsuchen (alles, was Mage_ * ignoriert!).

Wenn es immer noch Probleme gibt, würde ich versuchen, ein Standardvorlagenpaket vorübergehend zu erstellen, indem ich zu System> Design gehe und ein neues Design wie Standard oder Basis definiere. Wenn die Standardvorlagenpakete funktionieren, wissen Sie, dass die Fehlerursache in Ihren Vorlagendesigndateien (.phtml) liegt.

Viele Vorlagen, auf die ich gestoßen bin, verwenden schlecht Mage::getModel()->load()foreach-Schleifen, da dies eine schlechte Praxis ist und letztendlich große Mengen an Serverspeicher und Ressourcen verbrauchen kann.

Magento verfügt über ein Code-Analyse-Tool, mit dessen Hilfe Sie Ihre Vorlagendateien scannen können, um festzustellen, ob einer der folgenden fehlerhaften Codeteile vorhanden ist:

Weitere Lektüre:

Außerdem kann es für alle hilfreich sein, welchen Cache und Sitzungsspeicher Sie verwenden, der in definiert ist app/etc/local.xml.

Hoffe das hilft!


Ich werde es versuchen und dich wissen lassen ...
Baby in Magento

Wir haben den Ordner var / session gelöscht. als es unser Problem bis heute gelöst hat. Aber heute ist dieses Problem erneut aufgetreten. als ich dies in .htaccess hinzugefügt habe: SetEnv MAGE_IS_DEVELOPER_MODE "true" und Kommentar ini_set ('display_errors', 1); diese Linie. und <disable_local_modules> true </ disable_local_modules>. Dann habe ich diesen Fehler bekommen: magento.stackexchange.com/questions/94559/…
Baby in Magento

Ich lösche kein sessin, nachdem ich einige chnages getan habe, wenn ich die Sitzung automatisch lösche, wird sein, alles Problem zu lösen. Denken Sie nicht, dass es sich um Cookies oder Sitzungen handelt? Gibt es eine Möglichkeit, dies zu lösen?
Baby in Magento

@BabyinMagento Konnten Sie das Problem anhand der bereitgestellten Informationen lösen? Wenn ja, was war das Problem für die anderen, die ein ähnliches Problem hatten? Vielen Dank.
B00MER

1
Vielen Dank für Ihre Hilfe. Wir haben den Sitzungsordner geleert und Cookie-bezogene Dinge in varien.php versteckt. Aber wir müssen noch einige Zeit warten, um zu prüfen, ob wir eine dauerhafte Lösung erhalten haben oder nicht. Richtig, wir haben eine Lösung, als wir den Sitzungsordner geleert haben.
Baby in Magento

3

Ich vermute, es gibt eine Rekursion in Ihrem Code. Bearbeiten Sie die Datei lib/Varien/Db/Adapter/Pdo/Mysql.phpund setzen Sie $_debugund $_logCallStackauf true. Dies sollte den Aufrufstapel in einer var/debug/pdo_mysql.logDatei protokollieren, die Ihnen eine Vorstellung davon geben sollte, ob Ihr Code eine Rekursion aufweist, wenn das Laden für immer dauert. Beachten Sie, dass diese Datei weiterhin sehr schnell wächst. Aktivieren Sie sie daher im Idealfall, wenn Sie glauben, dass das Problem vor Ort aufgetreten ist.

Eine andere Möglichkeit besteht darin, fehlerhafte Module / Erweiterungen zu deaktivieren, von denen Sie glauben, dass sie dies verursachen könnten. Dies kann auch Ihre einfache konfigurierbare Preiserweiterung sein. Versuchen Sie, sie vorübergehend zu deaktivieren, und prüfen Sie, ob sie das Problem verhindert.


Ich habe die Werte von "$ _debug" und "$ _logCallStack" in "true" geändert. Jetzt warte ich auf die Datei "pdo_mysql.log". und unsere Protokollordner füllen sich zu stark, es sind fast 90 GB Protokolle vorhanden. ich habe die einfach konfigurierbare erweiterung vor 2 wochen installiert, dieses problem gab es ab 2 monaten. Müssen aber noch andere Buggy-Module anschauen.
Baby in Magento

Ich habe diese Datei var / debug / pdo_mysql.log bis jetzt nicht gefunden, aber System- und Ausnahmeprotokolle erstellt. Ich kann dieses Protokoll hauptsächlich sehen: "lib / Varien / Simplexml / Config.php auf Linie 510"
Baby in Magento

90 GB Protokolle? Wow! Sichern Sie sie an einem anderen Ort und leeren Sie die Dateien. Das sollte zumindest dazu beitragen, die Geschwindigkeit Ihrer Website zu verbessern.
Kalpesh

ja, du hast recht. wir löschen nach einigen zeiten weiter. Liegen diese Protokolle an diesem Problem? und bis jetzt habe ich keine gefunden pdo_mysql.log
Baby in Magento

Überprüfen Sie den Wert $_debugFilein der Mysql.php-Datei und stellen Sie sicher, dass Ihr varVerzeichnis über die erforderlichen Berechtigungen zum Erstellen eines Ordners und einer Datei verfügt.
Kalpesh

2

Ich hatte das gleiche Problem auf einer Kundenwebsite. Überprüfen Sie Ihr Magento auf Malware.

Dies ist ein bekanntes Szenario. In der Regel handelt es sich um eine Walware, die den Inhalt der Beiträge des Benutzers auf eine externe Website umleitet.

Beginnen Sie mit der Überprüfung von index.php, normalerweise hacken sie es. Scrollen Sie den Code bis zum Ende, und überprüfen Sie ihn auch nach rechts und zwischen den kommentierten Zeilen in der Lizenzüberschrift. Hacker werden verwendet, um Code auf diese Weise zu verbergen.

Sie haben die "ewige Ladezeit", da versucht wird, Websites zu kontaktieren, die Ihr ISP blockiert hat.

Es sollte ziemlich einfach sein, die Malware zu finden und nach "base64" -, "eval" - und "mcrypt" -Strings zu suchen.


das ist unser index.php => pastebin.com/N8xnWMa7
Baby in Magento

Unsere Seite wurde vor 3 Monaten gehackt, danach trat nur noch dieses Problem auf. aber später haben wir viele Sicherheitsmaßnahmen auf der Serverseite ergriffen. Aber denken Sie, dass der gehackte Code immer noch auf der Website vorhanden ist und Probleme verursacht?
Baby in Magento

Nun, Ihre index.php-Datei ist in Ordnung, aber Ihre Symptome ähneln denen, die ich in einigen von Kunden gehackten Websites gesehen habe. Ich schlage vor, eine vollständige Suche durchzuführen und nach folgenden Mustern zu suchen: "base64", "eval", "mcrypt", "$ _POST". Sie geben Ihnen Unmengen von Fehlalarmen, so dass Sie sie überprüfen müssen. Wenn Sie nichts falsch finden, empfehle ich Ihnen eine Cachegrind-Analyse oder eine xdebug-Schritt-für-Schritt-Analyse.
Phoenix128_RiccardoT

Ich werde diese Wörter in unseren Site-Dateien suchen.
Baby in Magento

Ich finde unbegrenzte Zeiten: "base64" kodieren und dekodieren Texte ........
Baby in Magento

2

Ich habe auf einem Magento mit zwei Websites ein ähnliches Verhalten festgestellt. Die Seite wurde für ein paar Seiten gut geladen und dann für immer geladen.

Die Konfiguration der Basis-URLs war falsch. Die Secure Base-URL-Einstellung wurde auf die falsche Website gesetzt, während die Unsecure Base-URL korrekt eingestellt wurde.

Um dies zu beheben, müssen die Werte in der Tabelle core_config_data für die richtige Website geändert werden, dh die richtige URL wird mit "http: //" und einem abschließenden Schrägstrich im entsprechenden Wertefeld festgelegt den Pfad "web / unsecure / base_url" und "web / secure / base_url" für die richtige scope_id, die die Website-ID darstellt.

Bildbeschreibung hier eingeben

Beachten Sie, dass die sichere URL nur http lautet, weil es sich um eine Demo-Website handelt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.