La taille de la table de cache était passée à 10+ Go le mois dernier, et je l'avais corrigée temporairement en la tronquant. La dernière fois que j'ai vérifié, c'était environ 1 Go. Donc, dans quelques mois, il atteindra à nouveau 10 Go. Comment cela devrait-il être traité?
Notez que j'ai désactivé toutes les tâches cron sur ce site. Si c'est la raison, quel cron doit être activé?
Vous avez mentionné dans votre commentaire à MPD que malgré la configuration du cron et leur exécution régulière, votre table cache_form grandit rapidement.
Une solution à cela consiste à exécuter votre cron plus fréquemment. Dites toutes les six heures ou moins? Si vous ne pouvez pas le faire, lisez la suite.
Solution alternative:
Installez Elysia Cron et vous pouvez maintenant exécuter la fonction cron de votre module séparément. Vous pouvez conserver la fréquence du cron Elysia pour que votre module fonctionne toutes les six heures. Pour que votre
cache_form
table soit élaguée toutes les six heures.Pendant ce processus d'élagage, les entrées qui ne datent pas de plus de 6 heures ne seront pas supprimées. La raison étant que si toutes les entrées sont supprimées, tous les formulaires qui sont soumis au moment de la suppression des entrées peuvent se comporter bizarrement.
Regardez le code dans https://api.drupal.org/api/drupal/includes!form.inc/function/form_set_cache/7
Au fur et à mesure que le commentaire se lit, ils supposent que cela devrait être suffisant et dans votre cas, cela devient trop pour vous. Donc, l'astuce consiste à effacer la table cache_form plus fréquemment et à réduire la valeur de $ expire à une valeur inférieure, si vous souhaitez effacer les entrées cache_form plus fréquemment que la valeur par défaut de 6 six heures, vous devez modifier le TTL de les entrées cache_form.
Vous pouvez le faire en installant cacheboject puis en implémentant le
hook_cacheobject_presave
délai dans lequel vous pouvez modifier le TTL pour qu'il soit de 2 ou 3 heures.Un inconvénient de cette approche est que si les formulaires ne sont pas soumis dans les 2 heures (la valeur RTL que vous définissez), les données du formulaire peuvent être perdues et vous pouvez obtenir des problèmes de formulaire expiré.
la source
Pour contourner ce problème, j'ai créé le module https://www.drupal.org/project/session_cache_form
la source
Lorsque j'avais des problèmes de performances sur un site sur lequel je travaillais, je suis tombé sur cela après avoir corrigé la mise en cache. Vous pouvez lire l'article ici: https://thinktandem.io/blog/2017/11/22/debugging-with-new-relic-blazemeter-strace-more/
À partir de mon article de blog, vous pouvez ajouter une configuration de file d'attente et de cron, puis utiliser quelque chose comme Elysia Cron pour que tout fonctionne bien ensemble:
la source
Utilisez le module Safe cache_form Clear .
Il vous permettra d'abord de tailler la table à une taille raisonnable, puis de la maintenir.
Extrait extrait de la page du projet:
Une fois le module installé, élaguez d'abord cache_form: exécutez
drush safe-cache-form-clear
jusqu'à ce que la taille de la table reste cohérente, indiquant que vous avez supprimé tous les enregistrements de plus de 6 heures.Il continuera ensuite à fonctionner sur cron.
Il s'agit du module documenté à cet effet par Acquia pour leurs abonnés. La page de documentation Acquia fournit de bonnes informations supplémentaires.
la source