This page is also available in English (Angielski)

Jak ustawić automatyczne archiwizowanie Twoich raportów?

Jeżeli Twoja witryna ma ponad kilkaset odwiedzin dziennie (brawo!), czas oczekiwania na przetworzenie danych przez Piwika może wynosić kilka minut. Najlepszym sposobem na uniknięcie tego oczekiwana jest ustawienie zadania cron na Twoim serwerze, tak aby dane były automatycznie przetwarzane co godzinę.

Jak ustawić crontab, aby automatycznie archiwizował raporty?

Aby wywołać automatyczną archiwizację Piwika co godzinę, możesz skonfigurować crontab. Crontab jest usługą, która pozawala na uruchamianie programów w zadanym czasie na serwerach uniksowych i podobnych. Żeby go skonfigurować potrzebujesz dosętpu przez SSH do Twojego serwera. Zaloguj się i wykonaj:

# crontab -e

potem dodaj wiersze:

MAILTO="twojemail@przyklad.pl"
5 * * * * www-data /path/to/piwik/misc/cron/archive.sh > /dev/null

Skrypt archiwizujący Piwika będzie uruchamiany co godzinę. Generalnie skrypt wykona się w mniej niż jedną minutę. Na większych stronach (ponad 10.000 wizyt), proces archiwizacji może trwać do 30 minut.

Opis parametrów: www-data jest to użytkownik, który będzie wykonywał zadanie crona. Z reguły powinien być to użytkownik, z którego odpalany jest proces serwera www. Czasami jest to "apache". Wszystkie wiadomości błędów powstałe w wyniku wykonania zadania cron będą wysłane na adres twojemail@przyklad.pl

Opis narzędzia 'linux cron': Narzędzie cron używa dwóch różnych typów plików konfiguracyjnych, crontab systemowy i crontab użytkownika. Jedyna różnica pomiędzy tymi dwoma formatami to szóste pole. W systemowym crontab, szóste pole to nazwa użytkownika, pod którą komenda bedzie wykonana. Daje ono systemowemu crontab możliwość wowływania komend jako dowolny użytwkonik. W crontabie użytkownika, szóste pole jest komendą do wywołania. Wszystkie komendy są wywoływane jako użytkownik który stworzył crontab. Jest to istotna funkcjonalnosć w zakresie bezpieczeństwa. Jeżeli ustawiasz swojego crontaba jako crontab użytkownika, to powinieneś napisać:

5 * * * * /path/to/piwik/misc/cron/archive.sh > /dev/null

To zadanie crona uruchomi dzienny / tygodniowy / miesięczny / roczny proces archiwizacj o 00:05 każdego dnia. Zagwarantuje to, że gdy odwiedzisz Twój panel Piwika dane będą już przetworzone – Piwik szybko się załaduje.

Przetestuj komendę cron: Upewni się czy crontab będzie faktycznie działał przez wywołanie komendy

# sh /path/to/piwik/misc/cron/archive.sh

w powłoce systemowej. Powinieneś zobaczyć wyjściowy plik XML zawierający liczbę wizyt dla każdego dnia.

Rada dla witryn z średnim i dużym ruchem

Wyłącz archiwizację Piwika wywoływaną z przeglądarki i ogranicz liczbę raportów które mają być aktualizowane co godzinę.

Bardzo zalecamy skonfigurować proces automatycznej archiwizacji tak jak wyjaśniono to powyżej. Możesz równeż teraz bezpiecznie wyłączyć automatyczne archiwizowanie z przeglądarki. Dzięki temu, będziesz miał pewność, że Twoi użytkownicy Piwika nie wywoływują ciężkich procesów archiwizacji. Przejdź do "Ustawień głównych" w Twoim panelu administratora Piwika i wybierz:

  • Zezwół na wywoływanie archiwizaji Piwika, gdy raporty są przeglądane przy pomocy przeglądarki: Nie
  • Dzisiejsze raporty będą przetwarzane nie częściej niż co: 3600 sekund

Kliknij zapisz, aby zachować zmiany.

Dzisiejsze statystki będą przechowywane przez godzinę, co zapewnia, że raporty nie będą przetwarzane zbyt często.

Zwiększ ilość pamięci

Jeżeli dostajesz błąd: Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate X bytes), możesz zwiększyć ilość pamięci przydzielanej PHP. Zaktualizuj swój plik /etc/php5/cli/php.ini ustawiając w nim np.:

memory_limit = 128M

Ta zmiana będzie dotykać tylko PHP CLI. Twoja konfiguracja serwera www nie zostanie zmieniona. Archiwizacja crontab powinna teraz działać, a Piwik będzie bardzo szybki!

Więcej informacji o archiwizacji Piwika

  • Twoja baza danych Piwika będzie rosnąć z biegiem czasu – to normalne. Piwik usunie archiwa, które zostały przetworzone dla niekompletnych okresów (np. kiedy archiwizujesz tydzień w środku tego tygodnia), ale nie usunie innych archiwów. Dlatego masz archiwa dla każdego dnia, kazdego tygodnia, każdego miesiąca i każdego roku w tabelach mysql. Zapewniają one bardzo szybką reakcję interfejsu użytkownika i bardzo szybki dostęp do danych, ale wymagają dodatkowego miejsca na dysku. W przyszłości można sobie wyobrazić wtyczkę, która usuwałaby cześć starych danych (np. zachowuje tylko pierwsze 50 wierszy z każdego raportu).
  • Na tę chwilę archiwzacja nie usuwa logów. W przyszłości te logi będą usuwane albo zamieniane w inne tabele lub pliki.
  • Archiwizowanie kilka razy dziennie będzie jedynie skutkowało częstszą aktualizacją bieżących raportów. To nie zmieni wymagań pamięci dla innych okresów: archiwizacja Piwika nie jest przyrostowa.
  • Istnieje problem pamięci podczas archiwizacji Piwika. W szczególności dotyczy to dużych instalacji Piwika.
  • Jeżeli nie ustawisz automatycznego archiwizowania, archiwizowanie zostanie wykonane, gdy użytkownik wejdzie na dowolną stronę raportu Piwika. Zabierze to dużo czasu i będzie nieprzyjemnym doświadczeniem dla użytkowników (musieliby czekać N sekund), stąd też zalecamy ustawić automatyczne archiwizowanie dla średnich i dużych witryn jak wyjaśniono powyżej.
Entries (RSS)