[gelöst] Anzeige einer View: WSOD, aber nur bei einigen Datensätzen
am 27.06.2018 - 19:34 Uhr in
Ich habe einen seltsamen Fehler, bei dem ich nicht weiter komme.
Es geht um eine View, die aus einem Pool von 2000 Datensätzen immer einen Datensatz (= 1 Person) anzeigt. Die Datensätze sind miteinander per entity references verknüpft.
In der View (page display) werden eine Reihe von Angaben zur ausgewählten Person plus Links zu verknüpften Personen angezeigt. Bei Klick auf einen Link wird die hinterlegte Person im Zentrum der View angezeigt, wiederum mit Links zu weiteren Personen. Die Links sind als /myview?field_pid_value=100&#person formatiert. (PID ist die eindeutige Personen-ID des Datensatzes. Die ganze Sammlung wurde per Feeds importiert.)
Zur Personensuche gibt es eine zusätzliche View (block display) mit exposed filters (Namen, Jahrgang (min/max) und die PID). In dieser View kann es viele Ergebnisse geben, sie werden in Kurzform unter dem Suchformular gelistet. Jeder Name ist in der gleichen Weise wie oben mit einem Link hinterlegt. Beim Klick darauf wird eine neue Person geladen und angezeigt.
Das Display der View kommt aus einem speziellen DS Viewmode mit eigenem Template. Innerhalb des Displays gibt es weitere Komplexität:
1) die verknüpften Personen (entity references) werden mit einem Code-Feld und weiterem Viewmode gerendert, hier wird mittels Tokens der obige Link gebaut,
2) für zwei Darstellungen - einmal Personen, einmal ein im Overlay dargestellter, verlinkter Text - gibt es EVA-Felder.
Außer dieser View gibt es noch die normale Personen-Node-Ansicht, in der alle Felder bzw. Angaben (bis auf ein paar, die nur der Verwaltung dienen), angezeigt werden.
Die Website ist vor kurzem auf den live Server umgezogen (Hosteurope, Shared-Hosting Paket, max php memory 256 MB) und befindet sich in der Alpha-Testphase.
Jetzt plötzlich gibt es das Problem, dass in der View einige Personen nicht angezeigt werden: WSOD. Wohlgemerkt, nur einige wenige und in dieser View, die Node-Ansicht funktioniert bei allen einwandfrei.
Auf dem Entwicklungsserver werden dieselben Personen aber auch in der View problemlos angezeigt.
Meine erste Idee war: php memory ausgeschöpft.
Es gibt aber keinen Eintrag in den Server Logs. Und warum immer dieselben Personen und die anderen nicht?
Ein weiterer Gedanke: schleppen diese Personen irgendwelche Ladehemmungserzeuger in ihrem Datensatz mit?
- uneindeutige Abfrage, also, dass es für den Link mehr als ein Ziel gibt. Die Abfrage nach PID, sowohl in der Personensuche-View als auch in der erweiterten Admin-Inhalt-View ergibt immer nur eine Person pro PID (jedenfalls bei den getesteten).
- uneindeutige Abfrage, also, dass die verknüpften Personen nicht eindeutig zugeordnet sind. Auch nicht, denn die entity references verweisen auf die NID, und die ist schon vom System her eindeutig.
- Bilder, die eingetragen sind, aber nicht geladen werden können. Ist 1) auf dem Entwicklungsserver kein Hinderungsgrund und 2) hier nicht der Fall.
- Probleme mit der Colorbox bei dem Text, der bei Klick im Overlay angezeigt werden soll. Alle Problemfälle haben den Text, aber eben auch andere, die nicht "klemmen". Warum also immer bei diesen Personen und bei den anderen nicht? Ist nicht zu prüfen, da erst gar kein HTML aufgebaut wird.
Habt Ihr mir Tipps, in welche Richtung ich weiter suchen kann?
Vielen Dank im voraus!
Gruß
kissmedve
- Anmelden oder Registrieren um Kommentare zu schreiben
Sehr interessanter FAll.
am 28.06.2018 - 06:10 Uhr
Sehr interessanter Fall.
Ich lieeebe ja sowas. Man fühlt sich immer so erfrischt und schmerzfrei, wenn man es dann gelöst hat.;-)
Ich hätte auch als erstes die Probleme hier gesucht:
"Die Website ist vor kurzem auf den live Server umgezogen (Hosteurope, Shared-Hosting Paket, max php memory 256 MB) und befindet sich in der Alpha-Testphase."
Und auf Memory Limit getippt.
Wäre mal einen Versuch wert, lokal mit 512 MB zu testen.
Hast Du ausdrücklich ins Error Log geschaut, nicht nur ins Access-Log?
Drupal Watchdog sagt auch nichts?
Ich kenne das Modul EVA nicht.
Wäre es möglich, dass da Background-Prozesse unter einer anderen PHP Version laufen, die noch weniger PHP memory haben?
In dem Fall werden auch keine Fehler im Server-Error-Log erzeugt.
Nur so ein Brainstorm-Gedanke, ich glaubs ja nicht wirklich bei einer View.
Beim Feeds-Import u.U. ja.
Wir sind mit unseren Domains auch bei HostEurope. Alle zusammen auf einem Supreme Paket.
Das stressen wir manchmal auch ganz schön.
Mit Feedsimport von zig-tausend Datensätzen und ebenfalls relativ komplexen Datensätzen.
Da hatte ich einen ähnlichen Effekt, wo ich mit einem Views Field gearbeitet habe.
Das musste ich dann entfernen.
Da war die Memory-Überschreitung im Serverlog abzulesen.
Notfalls mal den Support kontaktieren, ob die noch was sehen.
Welche PHP Version ist das? Könntest Du auf 7 umstellen?
Ansonsten bleibt wohl nur eines:
Den Datensatz einer funktionierenden Person mit dem einer nicht funktionierenden Person abgleichen, Unterschiede feststellen, schritteweise eliminieren, schauen, wann es funktioniert.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Erstmal vielen Dank für Deine
am 28.06.2018 - 13:34 Uhr
Erstmal vielen Dank für Deine ausführliche Antwort. Beruhigend, dass ich mit meiner Fehlersuche richtig liege ... und auch wieder nicht, da sie (noch) nichts ergibt. Aber nun gut, vor die Erfrischung haben die Götter den Schweiß gesetzt ;-) ...
EVA = entity views attached. Also, Du baust eine View mit contextual filter, mit Feldern oder DS viewmode, die hängst Du als Feld an einen anderen viewmode und zeigst die Node als Node-Ansicht oder eben wieder innerhalb einer View an. Das ist schon zweimal um die Ecke, aber funktioniert trotz Komplexität normalerweise gut.
Die Entwicklungsinstallation ist auf Uberspace, leider wollte der Kunde da nicht bleiben, da seine alte Website auf Hosteurope lag. Auf Uberspace gibt mir der Status Report das PHP-Speicherlimit mit 256M an und die PHP-Version mit 5.6.35. Also in etwa so wie bei Hosteurope.
Allerdings könnte ich mir vorstellen, dass Hosteurope verdeckte Engpässe eingebaut hat. So wie sie zwar mit ssh werben, in Wirklichkeit die vollen ssh- bzw sftp-Funktionen erst ab dem Premium-Paket freigeben, und die Infos darüber tief im Kleingedruckten bzw. in den FAQ verstecken. Woanders gehört ssh mittlerweile bis in die einfachen Pakete zum Standard.
Überhaupt hat das Hosteurope-Backend eher Ähnlichkeit mit einem Labyrinth als mit einer übersichtlich aufgebauten Struktur. Ich bin seit Ewigkeiten bei Webhostone, da ist alles klar und einfach, und zuverlässig und günstig sind sie auch. Was ich von All-inkl und 1und1 gesehen habe, fand ich auch ok.
Ja, ich habe ganz explizit das PHP-Errorlog angeschaut - wenn ich es denn richtig gemacht habe, denn die Ausgabe war komplett leer. Und Hosteurope gibt ja keinen Zugriff auf Ordner oberhalb der Web-Ebene, sondern der Dateiinhalt wird zum Browser geschickt.
Drupal Watchdog, also das DB-Log, sagt alles Mögliche, aber wohl nichts, das spielentscheidend wäre. Einen Modulrest aus einer alten Tranliteration-Version und ein paar Instanzen eines gelöschten Feldes. Beides findet sich auch in der Testinstallation.
Auf PHP 7 umstellen? Wäre einen Versuch wert. Hoffentlich fliegt mir das Ding dann nicht komplett um die Ohren ;-)
Zu den problematischen Datensätzen gibt es analoge bei den funktionierenden, die genauso umfassend ausgefüllt sind, insbesondere auch Bild- und den langen Text haben. Da hab ich schon verglichen, mir fällt aber nichts auf.
Schau mer mal, wie's weiter geht. Ich werde berichten.
Tja, dazu fällt mir nur
am 28.06.2018 - 14:23 Uhr
Tja, dazu fällt mir nur ein...schwierig.
Aber das wusstest Du auch vorher schon. ;-)
Mit HostEurope waren wir 15 Jahre zufrieden.
Nun ziehen wir gerade zu All-Inkl um.
Grund: bei dem Supremepaket bei HE gibt es keine Möglichkeit, mehrere Domains mit getrennter Statistik laufen zu lassen.
Dazu habe ich vor 15 Jahren eine Lösung programmiert, die das logfile aufsplittet.
Da gab es vor Monaten ein Problem, hat einfach nicht mehr funktioniert.
Es gab von heute auf morgen Timeout beim fopen auf die Logdateien.
HE hat behauptet, sie hätten nichts geändert und hat sich sogar geweigert, Support zu leisten, für den ich extra gezahlt hätte.
Dass dieses Konstrukt nicht umbedingt im Rahmen des kostenlosen Supports zu debuggen war, habe ich nie bezweifelt.
Letztendlich musste ich eine andere Funktion verwenden, zum Öffnen der Dateien und dann hat es wieder funktioniert.
Das Verhalten des Supports hat mich damals so geärgert, dass wir nun nach und nach die Domains zu All-inkl ziehen.
Was nebenbei bemerkt bei gleicher Leistung auch günstiger ist.
Ich habe viele Jahre meinen Kunden vorgebetet, dass HE zwar teurer ist, aber auch gute Leistung / Support bietet.
Das kann ich jetzt leider nicht mehr bestätigen.
Auch SSL kostet extra. Nicht viel, aber bei mehren Domains zu viel.
Das nur am Rande bemerkt.
Du könntest bei All-Inkl ein Testpaket nehmen und es dort testen.
Die sind da sehr kulant. Hatte ich auch.
Wenn es dort funzt, liegt es eindeutig an HE.
Hört sich aber auch so an, als wäre das Paket evt. etwas knapp bemessen.
Zu PHP7: da fliegt Dir normalerweise nichts um die Ohren.
Drupal 7 Core kann auf jeden Fall damit und wenn ein Modul das nicht ann, kannst Du zurück schalten.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Es könnte auch eine Einstellung bei der Datenbank sein
am 28.06.2018 - 15:18 Uhr
vielleicht ist die Anzahl gleichzeitiger Abfragen begrenzt?
Oder es ist die max_exec_time - wenn der Aufbau der Seite länger braucht, als dieses Limit, kann die Seite nicht fertiggestellt werden.
Dies sollte jdoch im log-file stehen.
Auch die Überschreitung von Datenbankparametern müsste im error-log stehen.
Grüße
Ronald
PHP 7 did the trick
am 28.06.2018 - 18:23 Uhr
Juchu! Auf PHP 7 umgestellt und alles läuft, wie es soll.
Vielen Dank Euch fürs Mitdenken und Brainstormen.
Gruß
kissmedve
Super, hätte ich jetzt selbst
am 28.06.2018 - 19:06 Uhr
Super, hätte ich jetzt selbst nicht gedacht.
Behalte es im Auge.
Weil PHP 7 ist zwar performanter, aber viel Spiel ist dann nicht.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de