Ciao a tutti!
Ho un problema con le acquisition di matomo: se imposto una richiesta su un periodo lungo (per esempio su 6 mesi o più) ho sempre una risposta del tipo:
Oops… there was a problem during the request. Maybe the server had a temporary issue, or maybe you requested a report with too much data. Please try again. If this error occurs repeatedly please contact your Matomo administrator for assistance.
Lo stesso problema non si pone per i referres che invece riesco a vedere.
Qualcuno di voi ha lo stesso problema con i channels? Come posso ottenere i dati senza andare in timeout?
Istanza On Premise?
Devi aumentare la RAM!
Purtroppo non è questo il problema: la macchina ha 32 GB di RAM e ne utilizza 5
Controlla in Amministrazione > Diagnostica > Controllo del sistema che cosa c’è impostato per “Memoria massima”
Esatto, se PHP usa 5GB di ram, allora devi aumentare il tempo di esecuzione disponibile: max_execution_time
.
Se non erro, la durata viene espressa in secondi ed è impostata a 30 di default. Andrebbe alzata a 3-5 minuti. Ricordati anche di informare le persone che utilizzano l’interfaccia web o le API, se svolgono query troppo onerose, necessitano di più tempo per essere elaborate.
Ricorda anche che potrebbe andare a discapito del tracking, se l’istanza è una sola e si occupa di tutte le attività.
Ok, ho visto ora di quale sito stiamo parlando.
E sì, non è un problema di RAM quanto di tempo elaborazione e probabilmente a questo punto di CPU. Ma è un calciare la lattina più in là: se cresci ancora, il problema si ripresenta.
Purtroppo Matomo l’elaborazione dati sui siti grossi fa un po’ da collo di bottiglia… e qua mi fermo perché mi mancano le competenze, è un problema sistemistico.
Valuterei eventualmente di provare a sentire il supporto di Matomo per farsi abilitare il sync con BigQuery che è attualmente in beta:
Attenzione, ci sono alcune considerazioni da fare per i siti “grossi”, inteso con tante pagine, e/o molte visite.
Di solito occorre configurare il conteggio delle statistiche tramite operazione pianificata (cercare archive cronjob), in modo che matomo svolga i conteggi ogni tot di tempo o quando ci si aspetta poco traffico.
Poi occorre valutare se sia il caso di attivare il tracking asincrono per mezzo di Redis. C’è un plugin apposta per questo, si chiama queued tracking qualcosa.
Poi si può migliorare il caching usando redis, in fine leggo che si può usare Google BigQuery per calcolare gli aggregati (attenzione sempre alla anonimizzazione GDPR)
Normalmente, Matomo, preso installato di default, non configura niente di quanto detto in precedenza. Aprendo un report anch’esso vien calcolato in tempo reale dal malcapitato che lo apre. Si tratta di una configurazione adatta a piccoli siti/blog che sono la maggior parte dei casi.
Sia sul forum che nella documentazione, ci sono molte cose da leggere (in inglese) che aiutano nella gestione di grosse installazioni.
Grazie a tutti per le risposte!
Abbiamo provato ad aumentare la “Memoria massima” ed il max_execution_time ma il problema non è stato risolto. Li abbiamo ripristinati ai valori base per evitare problemi nel caso di molte connessioni simultanee.
Provo ad attivare il plugin con redis.
Spero di risolvere il problema perché ha poco senso utilizzare un analytics che non ti permette di vedere negli ultimi due/tre/sei mesi quello che è successo solo sul canale Direct o quello dei Search Engines!
Se qualcuno ha altre idee, sono ben felice di confrontarmi!
In alternativa puoi scaricarti i dati mensili e sommarli in un foglio di calcolo.
Ci possono essere anche altri problemi oltre alla memoria e la durata dello script.
Ad esempio la velocità del database se è condiviso o se “sta facendo altre cose”.
Il carico aumenta anche impostando a “tutte” la paginazione dei report e “rendendolo piatto”
Inoltre, hai indicato 6 mesi, quindi ipotizzo che tu abbia selezionato delle date specifiche dal calendario. Così facendo, Matomo deve generare i report ad-hoc, al volo.
Di solito su grandi installazioni i report vengono calcolati in modo asincrono tramite cronjob e ci si limita ai periodi standard.