Die Größe der Cache-Tabelle hat sich im letzten Monat auf über 10 GB erhöht, und ich habe sie vorübergehend korrigiert, indem ich sie abgeschnitten habe. Als ich das letzte Mal nachgesehen habe, waren es ungefähr 1 GB. In ein paar Monaten werden es wieder 10 GB sein. Wie soll damit umgegangen werden?
Beachten Sie, dass ich alle Cron-Jobs auf dieser Site deaktiviert habe. Wenn dies der Grund ist, welches Cron sollte aktiviert werden?
Sie haben in Ihrem Kommentar zu MPD erwähnt, dass Ihre cache_form-Tabelle trotz der Einrichtung und regelmäßigen Ausführung des Cron schnell wächst.
Eine Lösung besteht darin, Ihren Cron häufiger auszuführen. Sagen wir alle sechs Stunden oder weniger? Wenn Sie es sich nicht leisten können, lesen Sie weiter.
Alternative Lösung:
Wenn Sie Elysia Cron installieren , können Sie die Cron-Funktion Ihres Moduls separat ausführen. Sie können die Frequenz des Elysia-Cron beibehalten, damit das Modul alle sechs Stunden ausgeführt wird. Damit Ihr
cache_form
Tisch alle sechs Stunden beschnitten wird.Während dieses Bereinigungsvorgangs werden die Einträge, die nicht älter als 6 Stunden sind, nicht gelöscht. Wenn alle Einträge gelöscht werden, können sich alle Formulare, die zum Zeitpunkt des Löschens der Einträge gesendet werden, merkwürdig verhalten.
Sehen Sie sich den Code unter https://api.drupal.org/api/drupal/includes!form.inc/function/form_set_cache/7 an
Wie der Kommentar lautet, gehen sie davon aus, dass es reichlich sein sollte, und in Ihrem Fall wird es zu reichlich für Sie. Der Trick besteht also darin, entweder die cache_form-Tabelle häufiger zu löschen und den Wert von $ expire auf einen niedrigeren Wert zu reduzieren. Wenn Sie die cache_form-Einträge häufiger als den Standardwert von 6 sechs Stunden löschen möchten, müssen Sie die TTL von ändern die cache_form Einträge.
Sie können dies tun, indem Sie cacheboject installieren und dann implementieren,
hook_cacheobject_presave
in welchem Zeitraum Sie die TTL auf 2 oder 3 Stunden ändern können.Ein Nachteil dieses Ansatzes ist, wenn die Formulare nicht innerhalb von 2 Stunden gesendet werden (der von Ihnen festgelegte RTL-Wert), die Formulardaten möglicherweise verloren gehen und einige Probleme mit abgelaufenen Formularen auftreten können.
quelle
Um dieses Problem zu umgehen, habe ich das Modul https://www.drupal.org/project/session_cache_form erstellt
quelle
Wenn ich auf einer Site, an der ich arbeitete, Leistungsprobleme hatte, stieß ich darauf, nachdem ich das Caching behoben hatte. Sie können den Artikel hier lesen: https://thinktandem.io/blog/2017/11/22/debugging-with-new-relic-blazemeter-strace-more/
In meinem Blog-Beitrag können Sie eine Warteschlange und ein Cron-Setup hinzufügen und dann so etwas wie Elysia Cron verwenden , damit alles gut zusammenarbeitet:
quelle
Verwenden Sie das Modul Safe cache_form Clear .
Damit können Sie den Tisch zuerst auf eine angemessene Größe zuschneiden und dann pflegen.
Auszug aus der Projektseite:
Wenn das Modul installiert ist, bereinigen Sie zuerst cache_form: so lange,
drush safe-cache-form-clear
bis die Tabellengröße konsistent bleibt. Dies zeigt an , dass Sie alle Datensätze entfernt haben, die älter als 6 Stunden sind.Es läuft dann auf cron weiter.
Dies ist das Modul , das Acquia für seine Abonnenten zu diesem Zweck dokumentiert . Die Acquia-Dokumentationsseite bietet gute zusätzliche Informationen.
quelle