Home
» AMMINISTRAZIONE DI RETE
»
Risoluzione del problema di elevato utilizzo della CPU da parte del generatore di anteprime di Nextcloud: configurare il generatore di anteprime
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
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.
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.
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
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:
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:
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 è:
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
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.
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.
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.