Risoluzione del problema di elevato utilizzo della CPU da parte del generatore di anteprime di Nextcloud: configurare il generatore di anteprime

In breve: installa l'app Generatore di anteprime, abilitala, esegui una generazione iniziale attentamente pianificata, quindi programma le anteprime occ preview:pre-generatedurante le ore di minore attività. Imposta anche un limite alle dimensioni delle anteprime e al numero di nuove anteprime che Nextcloud genera contemporaneamente. L'app sposta l'elaborazione dal momento in cui l'utente apre un file; non impone un limite rigido alla CPU e può aumentare l'utilizzo del disco.

Questa configurazione è adatta a un server Nextcloud self-hosted dove le miniature causano picchi di utilizzo della CPU evidenti durante la navigazione, soprattutto su un server di piccole dimensioni con una libreria di foto o documenti già esistente. È meno utile se la tua istanza utilizza la crittografia lato server: il progetto Preview Generator elenca la crittografia come un'incompatibilità nota. L'hosting gestito, Nextcloud AIO, Docker e le installazioni di pacchetti utilizzano percorsi di comando diversi, quindi adatta i comandi alla tua implementazione. Non eseguirli da una directory indovinata.

Le istruzioni attuali per l'app raccomandano di installarla e abilitarla, eseguirla preview:generate-alluna sola volta e programmarne l'esecuzione preview:pre-generateper le successive modifiche ai file. Il primo comando può risultare oneroso su una libreria di grandi dimensioni. Inizia con un singolo utente o cartella e un singolo worker. Consulta il file README del progetto Preview Generator e le opzioni dei comandi , quindi seleziona una versione compatibile con la tua versione di Nextcloud nell'App Store di Nextcloud .

1. Conferma che questa sia la soluzione corretta

Innanzitutto, individuate quando si verifica un aumento dell'utilizzo della CPU. Se ciò accade quando gli utenti aprono cartelle o documenti contenenti molte foto che necessitano di un'anteprima, la pre-generazione potrebbe spostare gran parte di questo lavoro su un'attività pianificata. Se l'utilizzo della CPU rimane elevato anche quando nessuno sta navigando, o se i picchi coincidono con un altro servizio, Preview Generator potrebbe non risolvere il problema. Controllate il monitor dei processi e i log di Nextcloud prima di modificare le impostazioni.

Preview Generator registra i file aggiunti o modificati e li elabora in background. Le anteprime esistenti rendono le richieste successive più economiche, ma le anteprime mancanti possono comunque essere generate su richiesta prima che l'elaborazione pianificata le raggiunga. Ciò significa che l'applicazione riduce i picchi di utilizzo della CPU per l'utente quando la coda è in coda; non può garantire un utilizzo nullo della CPU. Inoltre, sacrifica spazio di archiviazione per una consegna più rapida delle anteprime. Una piccola libreria con una consultazione poco frequente potrebbe trovarsi a suo agio con il comportamento on-demand di Nextcloud.

2. Installa la versione dell'app compatibile

Pagina generica di amministrazione del cloud con una scheda per l'anteprima delle immagini e il relativo interruttore di attivazione attivato.
Una pagina generica di amministrazione cloud mostra una scheda di anteprima dell'app attivata, che illustra la fase di installazione e attivazione; il layout non è uno screenshot specifico di una versione.

Accedi come amministratore di Nextcloud, apri l'area App, trova Preview Generator , installalo e abilitalo. Prima di procedere, verifica che l'App Store offra una versione stabile per la versione principale di Nextcloud installata. Evita di copiare manualmente la cartella dell'app più recente sovrascrivendo una versione che l'App Store segnala come incompatibile.

Gli amministratori con accesso alla shell possono controllare o abilitare l'app tramite occ. Di seguito è riportato un tipico comando di installazione del pacchetto; modificare il percorso del binario PHP e di Nextcloud in modo che corrispondano al proprio host. Per Docker o AIO, utilizzare invece il comando del container supportato o le istruzioni dello scheduler per tale distribuzione.

sudo -u www-data php /var/www/nextcloud/occ app:enable previewgenerator

3. Imposta i processi in background di Nextcloud su Cron

Nelle impostazioni di amministrazione di Nextcloud, seleziona Cron come modalità di esecuzione dei processi in background e verifica che il cron di sistema di Nextcloud sia effettivamente in esecuzione. Il file README dell'app indica che il processo in background di anteprima integrato richiede la modalità Cron; le modalità Webcron e AJAX non sono supportate per questo processo a lunga esecuzione. Se il tuo cron non funziona correttamente, l'installazione di questa app da sola non sarà sufficiente a mantenere la coda di esecuzione in movimento.

Non confondere la normale pianificazione cron.php di Nextcloud con la pianificazione dedicata opzionale dell'app preview:pre-generate. Si tratta di due meccanismi distinti. Puoi utilizzare il job in background integrato dell'app o un comando cron di sistema dedicato. Se scegli il comando dedicato, il progetto consiglia di disabilitare il job in background di anteprima integrato per evitare di eseguire entrambi i percorsi per la stessa coda.

Pagina generica di pianificazione con un'attività ricorrente attiva che conduce a una finestra di comando e alla visualizzazione dei risultati in miniatura.
Una pagina di pianificazione mostra un'attività ricorrente attiva che invia un'anteprima del lavoro a una finestra di comando e restituisce i risultati in miniatura.

4. Ridurre il carico di lavoro di anteprima prima della prima esecuzione in blocco

Pannello di configurazione generico con impostazioni simili a codice sopra i controlli per le dimensioni dell'anteprima e l'utilizzo del processore.
Un pannello di configurazione generico combina impostazioni simili a codice con controlli relativi alle dimensioni dell'immagine e al processore, illustrando i due limiti che gli amministratori dovrebbero regolare.

Per la creazione di anteprime che richiedono un elevato utilizzo della CPU, è consigliabile ridurre il numero di nuove anteprime eseguite contemporaneamente. Nel manuale di configurazione di Nextcloud 35, preview_concurrency_newè presente un parametro che controlla la generazione simultanea di nuove anteprime; il valore predefinito documentato è quattro e il manuale raccomanda di non superare il numero di core della CPU. Su un host di piccole dimensioni, si consiglia di provare un valore come due, o uno se il server non risponde. Questo limita il lavoro simultaneo, ma una singola immagine o un video di grandi dimensioni possono comunque consumare una quantità significativa di CPU.

Anche le dimensioni dell'anteprima sono importanti. Nextcloud 35 imposta di default una larghezza e un'altezza massime di 4096 pixel. Riducendo preview_max_xquesti preview_max_yvalori config/config.phpè possibile diminuire il consumo di risorse di elaborazione e memoria, a scapito di anteprime più piccole. Eseguite un backup del file di configurazione e integrate le impostazioni nell'array PHP esistente; non sostituite il file con un frammento di codice. Ad esempio, un amministratore potrebbe impostare entrambi i valori a 2048 e testare la qualità nelle viste File e Foto.

L'app può anche generare diverse varianti di dimensioni. Il suo file README fornisce un profilo di dimensioni ridotte per l'uso comune di File, Foto e Attività: dimensioni quadrate 64 256, dimensioni a larghezza e altezza complete 256 4096e dimensioni vuote, widthSizese heightSizesper saltare questi gruppi di varianti. Utilizza queste impostazioni solo se sono adatte alle app che i tuoi utenti utilizzano abitualmente; le timeline di Ricordi o altre app potrebbero richiedere dimensioni aggiuntive. Il progetto specifica che le dimensioni dell'anteprima devono rispettare le regole di dimensione accettate e non possono superare i massimi configurati. Consulta le impostazioni di dimensioni e qualità dell'anteprima di Nextcloud e il riferimento di configurazione specifico per la versione .

5. Genera le anteprime esistenti in un piccolo primo lotto

Dopo aver abilitato l'app e impostato i limiti, esegui il generatore iniziale su una cartella di prova o su un singolo utente anziché sull'intera istanza. L'app supporta il filtraggio per ID utente o percorso e il comando accetta il numero di worker. Per una prima prova prudente, utilizza un solo worker:

sudo -u www-data php /var/www/nextcloud/occ preview:generate-all --workers=1 --path="/alice/files/Photos"
Schermata generica delle impostazioni dei processi in background con l'opzione "Attività pianificate" selezionata.
La pagina delle impostazioni dei processi in background mostra l'opzione di attività pianificata selezionata; le etichette esatte e le opzioni disponibili variano a seconda della versione di Nextcloud.

Sostituisci alice, il percorso e il percorso di installazione di Nextcloud con i valori reali del tuo server. L'opzione percorso utilizza il formato /[username]/files/[folder path]. Se ometti il ​​percorso e il filtro utente, il comando potrebbe attraversare l'intera libreria. Esegui il batch quando gli utenti sono meno attivi, monitora CPU, memoria e spazio su disco e interrompi per rivalutare la situazione se il server diventa instabile. Non aumentare il numero di worker solo per terminare più velocemente finché non hai misurato l'effetto.

6. Pianifica i file appena aggiunti o modificati

Una volta che il batch di test si comporta correttamente, aggiungilo preview:pre-generatealla pianificazione cron del sistema. Il file README dell'applicazione suggerisce un intervallo di dieci minuti come esempio, non come requisito. Scegli un intervallo che corrisponda al volume di upload e al tempo di inattività disponibile. Ad esempio, un crontab gestito dall'account del server web potrebbe contenere la seguente riga, con i percorsi adattati all'installazione:

*/10 * * * * cd /var/www/nextcloud && /usr/bin/php -f occ preview:pre-generate
Pannello in stile terminale con un'icona di cartella seguita da miniature di immagini generate automaticamente.
Una finestra in stile terminale mostra la cartella selezionata seguita dalle miniature delle immagini, che rappresentano una prima analisi effettuata da un singolo operatore su un percorso limitato.

Se si utilizza questo cron di sistema dedicato, disabilitare il processo in background di anteprima integrato dell'app, come raccomandato dal progetto. L'impostazione documentata dell'app è:

sudo -u www-data php /var/www/nextcloud/occ config:app:set --value=true --type=boolean previewgenerator job_disabled

Mantieni attivo il normale job cron.php di Nextcloud. Per i container e le piattaforme ospitate, utilizza lo scheduler supportato dalla piattaforma anziché inserire un percorso host in una voce cron del container. Se l'app è installata con la crittografia abilitata, interrompi qui e consulta il tuo amministratore o il tuo provider di hosting; il progetto attualmente indica questa configurazione come non supportata.

7. Monitorare la coda e confermare il miglioramento

Schermata di monitoraggio generica con grafico dell'utilizzo della CPU e due barre di avanzamento della coda.
Un pannello di monitoraggio generico combina un grafico della CPU con barre di avanzamento della coda per confrontare il carico del server e il backlog di anteprima.

Esegui il comando occ preview:queue-statsper ispezionare la coda di pre-generazione e le anteprime obsolete. Una coda che si riduce tra le esecuzioni programmate suggerisce che il worker sta recuperando il ritardo. Se cresce costantemente, gli utenti stanno aggiungendo file più velocemente di quanto il job configurato li elabori; aumenta con cautela la frequenza di esecuzione o i limiti consentiti per i job, dopo aver verificato che il carico aggiuntivo della CPU sia accettabile. L'applicazione espone i limiti per il tempo di esecuzione dei job e per le anteprime per esecuzione. Il suo file README afferma che zero significa illimitato, quindi non scegliere zero a caso su un host con risorse limitate.

Confronta i picchi di utilizzo della CPU prima e dopo l'implementazione in orari simili, quindi apri una cartella di foto rappresentativa e l'anteprima di un documento come un normale utente. Verifica che le miniature vengano visualizzate, che le pagine rispondano ancora correttamente e che l'utilizzo della CPU si stabilizzi dopo il batch programmato. Un profilo di utilizzo della CPU più piatto durante il giorno con un adeguato avanzamento della coda è un risultato positivo; un backlog in costante crescita o sessioni utente più lente indicano che la pianificazione, il profilo dimensionale o il provider di anteprima sottostante necessitano di una revisione.

Galleria di file cloud che mostra sei miniature di immagini in una visualizzazione a cartelle.
Una galleria in stile File visualizza le miniature delle immagini, a conferma visiva del corretto caricamento delle anteprime richieste.

Limiti importanti e pulizia sicura

Alcuni tipi di anteprima dipendono da programmi lato server: il manuale di Nextcloud elenca FFmpeg per le anteprime video e LibreOffice per le anteprime dei documenti Office. Questi formati possono comportarsi in modo diverso dalle normali miniature delle immagini e il loro supporto dipende dalla configurazione del provider. Inizia riducendo il numero di file in esecuzione contemporaneamente e testando un set limitato di file prima di cambiare provider o aggiungere servizi.

Se si modificano le dimensioni dell'anteprima o i tipi di file supportati e si ha la necessità di eliminare le anteprime memorizzate nella cache, Nextcloud 31 e versioni successive offrono occ preview:cleanupuna soluzione a questo scopo, come indicato nel README del progetto. Questa procedura rimuove tutti i file di anteprima generati, dopodiché Nextcloud crea anteprime su richiesta quando gli utenti accedono ai file. Ciò può temporaneamente causare i picchi di utilizzo della CPU che si sta cercando di ridurre. È consigliabile eseguire un backup quando opportuno, pianificare la pulizia in modo mirato ed evitare di eliminare manualmente la directory di anteprima di appdata durante le normali operazioni di ottimizzazione. Il README del Generatore di anteprime documenta anche un .nomediafile per saltare una cartella e i suoi discendenti quando necessario.

Simbolo di cartella e file nascosto accanto a uno scudo con un lucchetto.
Accanto a uno scudo e a un lucchetto compaiono una cartella e il simbolo di un file nascosto, a indicare la limitazione della crittografia e la possibilità di saltare una cartella.

In pratica, Preview Generator è una soluzione ideale quando le anteprime on-demand lente creano picchi di carico visibili, è possibile pianificare l'esecuzione in background e si dispone di spazio su disco per le dimensioni della cache. È consigliabile abbinarlo a un limite di concorrenza moderato, dimensioni di anteprima che corrispondano alle effettive esigenze di visualizzazione e a un'esecuzione di prova preliminare. Se l'istanza è crittografata, gestita senza pianificazione della shell o limitata dalla CPU per motivi non correlati alle richieste di anteprima, è opportuno verificare tali limitazioni prima della distribuzione.

Riferimenti ufficiali

Lascia un commento

Ingresso vs. Uscita: qual è la differenza nelle reti?

Ingresso vs. Uscita: qual è la differenza nelle reti?

Comprendere come i termini "ingress" e "egress" descrivono il traffico in entrata e in uscita, perché la direzione dipende dal confine della rete e come monitorare la larghezza di banda e individuare i trasferimenti di dati rischiosi.

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

Confronta sei server e collettori syslog gratuiti per Windows e Linux, inclusi strumenti con interfaccia grafica, opzioni open source, funzionalità di ricerca, avvisi e trasporto sicuro.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Scopri cosa fa Microsoft IIS, come funzionano la sua pipeline di richieste e i pool di applicazioni e quando Apache, NGINX o Caddy potrebbero essere più adatti alle tue esigenze di server web.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Diagnostica i picchi di utilizzo della CPU del browser Jitsi Meet e riduci il carico del client controllando i riquadri video, gli effetti della fotocamera, la grafica del browser e le impostazioni dell'host.

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Monitora lo stato di salute, il carico della conferenza e il traffico di Jitsi Videobridge con il suo endpoint Prometheus integrato, quindi esplora e visualizza i dati in Grafana.

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Configura un dominio personalizzato per Jitsi Meet Docker con DNS, URL pubblico, HTTPS, Let's Encrypt, porte del firewall, impostazioni NAT e verifica end-to-end.

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 errors after SSL renewal by checking the correct URL and port, proxy routing, service status, deployed certificates, and logs.

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Scopri come diagnosticare e risolvere l'avviso di configurazione di PHP OPcache di Nextcloud controllando l'SAPI PHP attivo, i limiti di dimensionamento, i commenti e le impostazioni di riconvalida.

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere i problemi di migrazione del database Kopano dopo un aggiornamento di MySQL o MariaDB verificando i backup, le versioni del server, le modalità SQL, il set di caratteri, lo stato dello schema e i log.

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Collega Nextcloud a LDAP o Active Directory con trasporto sicuro, filtri per utenti e gruppi, attributi di accesso e un'implementazione collaudata.