Come ottimizzare i processi delle miniature delle foto in prossimità delle finestre di backup

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

La generazione delle miniature legge gli originali, scrive molti derivati di piccole dimensioni, aggiorna le righe del database e può competere per la CPU con la codifica video o il machine learning. Eseguirla durante un backup del NAS può allungare entrambe le attività e aumentare la latenza durante la consultazione interattiva delle foto.

L'obiettivo non è rendere le miniature permanentemente lente. Misura quale risorsa entra in conflitto con il backup, riduci solo la concorrenza pertinente e assegna a ogni attività intensa una finestra definita, con una regola di recupero nel caso in cui superi il tempo previsto. Documenta le normali impostazioni dei worker, così che una limitazione temporanea non diventi un limite permanente senza che nessuno se ne accorga.

Misura il conflitto prima di modificare i worker

Esegui un backup normale senza arretrati di miniature e registra la durata, la latenza dello storage, il throughput di rete e l'utilizzo della CPU. In un altro giorno, elabora un lotto rappresentativo di miniature senza traffico di backup e acquisisci le stesse metriche.

La risorsa vincolata determina la soluzione. Una latenza elevata del disco suggerisce di scaglionare i carichi di lettura e scrittura; una CPU satura suggerisce di ridurre il numero di worker per le immagini; un volume del database sotto pressione potrebbe richiedere di separare lo storage del database da quello dei derivati.

Immich espone code dei job e controlli dei worker descritti nella sua documentazione su job e worker. Registra i valori attuali prima di modificarli, così un esperimento non riuscito potrà essere annullato in modo pulito.

Definisci una finestra tranquilla e una regola per gli sforamenti

Inserisci i backup nella finestra con i requisiti di ripristino più stringenti, quindi riserva una finestra successiva o precedente per l'elaborazione delle miniature. Evita di avviare entrambe le attività nello stesso minuto, perché l'avvio delle code può creare un picco di aperture di file e attività del database.

Definisci cosa deve accadere se un backup si prolunga. Una regola sicura consiste nel lasciare ridotti o in pausa i worker delle miniature finché il backup non segnala il completamento, quindi ripristinare la normale concorrenza invece di consentire alla cieca la sovrapposizione dei due programmi.

Mantieni una finestra di recupero dopo le importazioni di grandi dimensioni. In caso contrario, un limite ridotto dei worker durante la notte può lasciare gli utenti in attesa delle miniature per giorni, anche se durante il giorno sono disponibili risorse.

Adatta la concorrenza al collo di bottiglia

Modifica una sola classe di worker o un solo valore di concorrenza alla volta ed elabora un lotto delle stesse dimensioni. Confronta la velocità di svuotamento della coda con la durata del backup e la latenza interattiva, invece di valutare il risultato basandoti solo sull'utilizzo della CPU.

Se gli originali e i backup condividono dischi rigidi, spesso ridurre il numero di letture simultanee delle immagini è più utile che aumentare il limite della CPU. Se gli originali si trovano su uno storage veloce ma il database è sotto pressione, sposta o proteggi il carico del database prima di aumentare il numero di worker.

Mantieni affidabili i mount di rete durante entrambe le operazioni. La guida allo storage di rete di Immich spiega perché un percorso montato ma bloccato può sembrare un problema del job dell'applicazione.

-15% OFF

Convalida un ciclo completo e ripristina il normale funzionamento

Osserva un backup completo seguito da una finestra per le miniature. Registra gli orari di inizio e fine, la latenza massima dello storage, la profondità della coda, i job non riusciti e la possibilità per gli utenti di aprire le foto recenti durante il ciclo.

Dopo aver svuotato gli arretrati, riporta la concorrenza al valore normale documentato se l'impostazione ridotta serviva solo a proteggere il recupero. Una limitazione permanente deve essere intenzionale e basata su obiettivi di servizio misurati.

La modifica è riuscita quando la durata del backup rimane prevedibile, le code delle miniature si svuotano entro il periodo di recupero pianificato e non compaiono job non riusciti né risorse mancanti. Annulla l'ultima modifica alla concorrenza se aumentano la frequenza degli errori o la latenza del database.

Supporto e consigli

Altro da leggere

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.