Размер таблицы кэша увеличился до 10+ ГБ в прошлом месяце, и я временно исправил ее, обрезав. В прошлый раз, когда я проверял, это было около 1 ГБ. Так что через пару месяцев он снова достигнет 10 ГБ. Как с этим бороться?
Обратите внимание, что я отключил все задания cron на этом сайте. Если это причина, какой Cron должен быть включен?
В своем комментарии к MPD вы упомянули, что, несмотря на настройку cron и их регулярный запуск, ваша таблица cache_form быстро растет.
Одним из решений этой проблемы является более частое использование cron. Сказать каждые шесть часов или меньше? Если вы не можете позволить себе это сделать, читайте дальше.
Альтернативное решение:
Установите Elysia Cron, и теперь вы можете запускать функцию cron вашего модуля отдельно. Вы можете сохранять частоту запуска модуля Elysia cron каждые шесть часов. Так что ваш
cache_form
стол сокращается каждые шесть часов.Во время этого процесса удаления записи, которые не старше 6 часов, не будут удалены. Причина в том, что, если все записи удаляются, то любые формы, которые отправляются во время удаления записей, могут вести себя странно.
Посмотрите на код в https://api.drupal.org/api/drupal/includes!form.inc/function/form_set_cache/7
Как говорится в комментарии, они предполагают, что этого должно быть достаточно, а в вашем случае этого становится слишком много для вас. Таким образом, хитрость заключается в том, чтобы либо чаще очищать таблицу cache_form, либо уменьшать значение $ expire до более низкого значения, если вы хотите очищать записи cache_form чаще, чем значение по умолчанию, равное 6 шести часам, то вам необходимо изменить TTL записи cache_form.
Вы можете сделать это, установив cacheboject, а затем внедрив, в
hook_cacheobject_presave
течение которого вы можете изменить TTL, на 2 или 3 часа.Недостатком этого подхода является то, что если формы не будут отправлены в течение 2 часов (заданное вами значение RTL), данные формы могут быть потеряны и у вас могут возникнуть проблемы с истекшим сроком действия формы.
источник
В качестве решения этой проблемы я создал модуль https://www.drupal.org/project/session_cache_form
источник
Когда у меня возникали проблемы с производительностью на сайте, на котором я работал, я столкнулся с этим после того, как исправил кеширование. Вы можете прочитать статью здесь: https://thinktandem.io/blog/2017/11/22/debugging-with-new-relic-blazemeter-strace-more/
Из моего поста в блоге вы можете добавить настройки очереди и cron, а затем использовать что-то вроде Elysia Cron, чтобы все это работало хорошо:
источник
Используйте модуль Safe cache_form Clear .
Это позволит вам сначала обрезать стол до разумного размера, а затем поддерживать его.
Выдержка резюме со страницы проекта:
После установки модуля сначала удалите cache_form: запускайте,
drush safe-cache-form-clear
пока размер таблицы не останется неизменным, что означает, что вы удалили все записи старше 6 часов.Затем он продолжит работать на cron.
Это модуль, документированный для этой цели Acquia для своих подписчиков. Страница документации Acquia предоставляет хорошую дополнительную информацию.
источник