Rozmiar tabeli pamięci podręcznej wzrósł w zeszłym miesiącu do ponad 10 GB, a ja tymczasowo naprawiłem ją, obcinając. Ostatni raz sprawdziłem, że było to około 1 GB. Za kilka miesięcy znów osiągnie 10 GB. Jak sobie z tym poradzić?
Pamiętaj, że wyłączyłem wszystkie zadania CRON na tej stronie. Jeśli to jest powód, który cron powinien być włączony?
W swoim komentarzu do MPD wspomniałeś, że pomimo konfigurowania crona i regularnego uruchamiania go, twoja tabela cache_form szybko rośnie.
Jednym z takich rozwiązań jest częstsze uruchamianie crona. Mówisz co sześć godzin lub mniej? Jeśli nie możesz sobie na to pozwolić, czytaj dalej.
Alternatywne rozwiązanie:
Zainstaluj Elysia Cron, a teraz możesz uruchomić funkcję cron swojego modułu osobno. Możesz zachować częstotliwość cronu Elysia, aby moduł działał co sześć godzin. Aby twój
cache_form
stół był przycinany co sześć godzin.Podczas tego procesu przycinania wpisy, które nie są starsze niż 6 godzin, nie zostaną usunięte. Powodem jest to, że jeśli wszystkie wpisy zostaną usunięte, wszelkie formularze przesyłane w momencie usuwania wpisów mogą zachowywać się dziwnie.
Spójrz na kod w https://api.drupal.org/api/drupal/include!form.inc/function/form_set_cache/7
Jak czytamy w komentarzu, zakładają, że powinno to być obfite, aw twoim przypadku staje się dla ciebie zbyt obfite. Zatem sztuczka polega na częstszym czyszczeniu tabeli cache_form i zmniejszeniu wartości $ expire do niższej wartości, jeśli chcesz wyczyścić wpisy cache_form częściej niż domyślna wartość 6 sześć godzin, musisz zmienić TTL wpisy cache_form.
Możesz to zrobić, instalując cacheboject, a następnie wdrażając,
hook_cacheobject_presave
w którym możesz zmienić TTL na 2 lub 3 godziny.Wadą tego podejścia jest to, że jeśli formularze nie zostaną przesłane w ciągu 2 godzin (ustawiona wartość RTL), dane formularza mogą zostać utracone i mogą wystąpić problemy z wygasaniem formularza.
źródło
Aby obejść ten problem, utworzyłem moduł https://www.drupal.org/project/session_cache_form
źródło
Kiedy miałem problemy z wydajnością w witrynie, na której pracowałem, natknąłem się na to po naprawieniu buforowania. Możesz przeczytać artykuł tutaj: https://thinktandem.io/blog/2017/11/22/debugging-with-new-relic-blazemeter-strace-more/
Z mojego posta na blogu możesz dodać konfigurację kolejki i crona, a następnie użyć czegoś takiego jak Elysia Cron, aby wszystko działało dobrze:
źródło
Użyj modułu Safe cache_form Clear .
Pozwoli to najpierw przyciąć stół do rozsądnego rozmiaru, a następnie go utrzymać.
Fragment streszczenia ze strony projektu:
Po zainstalowaniu modułu najpierw przycinaj cache_form: uruchom,
drush safe-cache-form-clear
aż rozmiar tabeli pozostanie spójny, co oznacza, że usunąłeś wszystkie rekordy starsze niż 6 godzin.Następnie będzie kontynuował działanie na cronie.
Jest to moduł udokumentowany w tym celu przez Acquia dla ich subskrybentów. Strona dokumentacji Acquia zawiera dobre dodatkowe informacje.
źródło