Contenido/Concache wirft falsche Seiten aus

Gesperrt
JochBec
Beiträge: 54
Registriert: Sa 18. Dez 2004, 15:11
Kontaktdaten:

Contenido/Concache wirft falsche Seiten aus

Beitrag von JochBec » Mo 12. Apr 2010, 07:06

Hallo ;)

Seit Jahren läuft mit dem Cache alles super und seit wenigen Tagen tritt folgendes Problem auf:

Nach einer gewissen Zeit wirft der Cache Artikel falsch aus, die URL stimmt, einzelne Module innerhalb des Artikels passen aber nicht. Lösche ich den Cache durch eine Änderung im Layout, funktioniert es wieder. Auch wenn ich die Caching-Zeit sehr kurz ansetze läuft alles korrekt. Was nicht hilft, ist nur ein Löschen der con_code in der Datenbank.

Beispiel:
1.html wird immer korrekt ausgeworfen, plötzlich erscheint die korrekte URL, darunter aber ein völlig anderer Artikel der aber teilweise auch das korrekte Original sein kann, sprich: einzelne Module scheinen korrekt ausgeworfen zu werden, andere nicht.
Witzigerweise schiesst sich Contenido da auf einen Artikel ein, wirft also immer Bruchteile eines bestimmten Artikels aus, nach einigen Tagen wechselt der Artikel.

Cache-Busting hilft und alles läuft sofort wieder normal. Im Backend (ohne Caching) kommt es nie zu falschen "Zusammenstellungen", auch bei kurzen Caching-Zeiten nicht. Ich tippe also deswegen eher auf ein Caching-Problem als auf ein Datenbank/Contenido-Problem.

Eigentlich hatte ich die Artikel 60 Minuten im Cache. Testweise gerade bei einer Minute und das funktioniert fehlerfrei.

Änderungen am System gab es keine nennenswerten, das Problem kam ganz plötzlich. Besucherzahlen sind auch nicht explodiert, allerdings haben wir inzwischen rund 16.000 Artikel im System. Der Server selbst ist von akuter Langeweile geplagt, SQL-Last bei 10-30%, Load 0,04-0,6 (letzteres mit kurzem Caching), Latency bei 30-40ms.

Jemand eine Idee was die Ursache sein könnte?

Danke!!

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Contenido/Concache wirft falsche Seiten aus

Beitrag von xmurrix » Mo 12. Apr 2010, 09:45

Hallo,

zum Cachen der Ausgabe der Seiten wird jeweils ein Hashwert generiert, der in der Regel aus der Kombination von Request, GET- und POST-Variablen besteht.

Vermutlich stimmt hier etwas nicht, d. h. es wird ein Hashwert generiert, der immer auf die eine Seite verweist.

Überprüfe mal die Konfiguration zum Generieren des Hashwerts ($cfgConCache['idoptions']) unter unter cms/includes/concache.php in Zeile 109.

Die ID wird in cms/includes/class.concache.php in Zeile 383 generiert. Du müsstest herausfinden, ob da immer der gleichre Hashwert generiert wird, wenn ja, was die Ursache dafür ist.

Das Caching verwendet PEAR Cache_Output. Eventuell hilft hier ein Update auf die neueste Version oder der Wechsel auf Cache_Lite - für das zweitere muss man vermutlich einiges anpassen.

Kurz zu Logik des Caches:
Das Leeren der Tabelle con_code sorgt nicht dafür, dass das Cache neu geschrieben wird. Nur, wenn in der Tabelle con_cat_art das Feld createcode den Wert 1 für den jeweiligen Artikel hat, wird die Seite neu gecached.
Als das Caching eingeführt wurde, gab es nicht die Hooks, mit der man auf Änderungen an Artikel/Kategorien reagieren konnte. Das sollte man eventuell als neues Feature implementieren.

Sollen die Seiten erneut generiert werden, muss das Cacheverzeichnis gelöscht werden - Das Cacheverzeichnis findest du in der Regel unter cms/cache/ oder cms/cache/content/ (siehe $cfgConCache['cachedir'] + $cfgConCache['cachegroup'] in der cms/includes/concache.php).

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

mm2knet
Beiträge: 9
Registriert: Fr 5. Dez 2008, 12:54
Kontaktdaten:

Re: Contenido/Concache wirft falsche Seiten aus

Beitrag von mm2knet » Mo 12. Apr 2010, 17:58

Um das ganze Problem mal ein wenig genauer zu betrachten:

Folgendes haben wir noch herausgefunden:
- Alle Module, die mit der Variable IDart arbeiten, geben den zur URL passenden Code aus. Da diese meist mit ihrer eigenen Tabelle arbeiten, die zu dem Artikel nur über IDart verknüpft ist, kommen hier die richtigen Daten. Links in der Form /front_content.php?idart=yxz werden auch auch richtig in die im Browser angegebene URL übersetzt.
- Alle Module, die mit CMS_VALUE[], etc arbeiten sind von diesem Fehler betroffen. Hier werden dann falsche Daten übergeben. ALLERDINGS arbeiten alle Module mit den gleichen falschen Daten.

Ich gehe also davon aus, dass es vorkommen KANN, dass die CMS_VALUE, etc falsch ausgelesen werden können. Und zwar von einem anderen Artikel, der auch existiert, IDart allerdings immer den richtigen Wert hat.

Weiterhin nehme ich an, dass der Cache einfach nur die fehlerhafte Seite zwischenspeichert.

Gibt es eine Möglichkeit, dass ein fehlerhaftes Plugin dafür sorgen kann, dass auf einmal falsche Informationen zurückgeliefert werden?

Der Hash ist ja nur die Verknüpfung zwischen URL und Cacheeintrag. Daher gehe ich davon aus, dass der Fehler nicht an dieser Stelle liegt.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Contenido/Concache wirft falsche Seiten aus

Beitrag von xmurrix » Mo 12. Apr 2010, 21:37

Hallo mm2knet,

danke für die weiteren Infos, das kann hilfreich sein, um das Problem genauer einzugrenzen.

Dennoch ist das von dir beschriebene Verhalten, dass alle Module betroffen sind, die mit CMS_VALUE arbeiten, mir nicht bekannt.

Wie sehen die Seiten aus, die generiert und in der Tabelle con_code gespeichert werden? Enthalten auch generierte Seiten falsche Inhalte, oder ist dies nur in den gecachten Versionen der Seiten der Fall?

Falls im Projekt eine Callbackfunktion für den Ausgabepuffer definiert wurde, könnte dies auch eine Ursache für das Verhalten sein.

Eine weitere Möglichkeit wäre, dass ein verwendetes Modul, oder ein Plugin, warum auch immer, dieses Fehlverhalten verursacht, sobald das Caching aktiviert wurde.

Grüße
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

mm2knet
Beiträge: 9
Registriert: Fr 5. Dez 2008, 12:54
Kontaktdaten:

Re: Contenido/Concache wirft falsche Seiten aus

Beitrag von mm2knet » Mo 12. Apr 2010, 23:09

Das komische daran ist halt, dass der Fehler bei etwa 1 von 100 oder 1 von 1000 Aufrufen auftritt - bisher für mich nicht reproduzierbar. Wenn eine Seite einmal Fehlerhaft erstellt wurde, bleibt die Fehler bei der URL bis zum Drop des Elements aus dem Cache.

Gesperrt