Non esiste un numero universale e sicuro di connessioni worker per i caricamenti riprendibili. Dimensionatelo in base al numero massimo di socket simultanei che riuscite a riprodurre, quindi aggiungete un margine misurato.
Su un server domestico, un singolo caricamento visibile può mantenere una connessione client, una connessione upstream e periodi di inattività tra i blocchi mentre il browser ritenta o riprende il trasferimento. Iniziate dai conteggi delle connessioni attive durante la finestra di caricamento normale più intensa, confrontateli con i limiti del proxy e del sistema operativo e smettete di aumentare l'impostazione del proxy se i descrittori di file, i worker upstream, la memoria o l'applicazione cedono per primi.
Misurate la richiesta effettiva di caricamento prima di scegliere un limite
Contate le connessioni durante il carico di lavoro rilevante, non mentre il proxy è inattivo. Avviate lo stesso numero di caricamenti che è probabile vengano eseguiti dalla vostra famiglia o dal vostro piccolo team, mettete in pausa e riprendete diversi trasferimenti e includete eventuali client mobili che si riconnettono dopo la sospensione. Registrate i socket client accettati, i socket upstream stabiliti e le connessioni in attesa di una risposta upstream.
Un limite dei worker viene consumato da tutte le connessioni aperte gestite da quel worker, non solo dalle richieste HTTP completate. Per questo è necessario includere nella misurazione le connessioni del server sottoposte a proxy insieme alle connessioni client.
Utilizzate il totale massimo ripetibile come riferimento operativo. Se il totale aumenta solo durante raffiche di riconnessioni e diminuisce rapidamente, mantenete separato questo picco dalla richiesta sostenuta. Se continua a crescere mentre la velocità di caricamento rimane invariata, non considerate automaticamente quel numero crescente come capacità legittima: esaminate l'applicazione upstream, i timeout e le sessioni bloccate prima di aumentare qualsiasi valore.
Convertite la richiesta di socket in capacità per worker
Per un proxy inverso, un caricamento attivo occupa comunemente nello stesso momento una connessione lato client e una connessione lato upstream. Le connessioni keepalive HTTP, i controlli di integrità, le sessioni WebSocket e il traffico amministrativo consumano slot aggiuntivi. Considerate il doppio del numero di caricamenti simultanei come un modello iniziale, non come una risposta definitiva, perché il totale dei socket misurato è più affidabile di una regola empirica.
Un limite visibile delle connessioni worker può rifiutare nuovi client anche mentre i trasferimenti stabiliti continuano. Confrontate il worker più impegnato con il relativo limite configurato, quindi controllate il limite dei file aperti del processo del servizio; un valore proxy più elevato non può creare descrittori di file che il processo non è autorizzato ad aprire.
Scegliete un obiettivo superiore al valore massimo del worker osservato ripetutamente, lasciando spazio sufficiente per il picco di ritentativi osservato e per il normale traffico non legato ai caricamenti. Non moltiplicate il valore per ogni client e blocco possibile se tali connessioni non esistono mai simultaneamente. Se il limite del sistema operativo è inferiore, allineate prima quel livello oppure mantenete l'obiettivo del proxy al di sotto di esso.
Testate il percorso originale di ripresa e interpretate il problema
Ripetete l'innesco esatto: avviate l'intero insieme di caricamenti, interrompete diversi client, quindi riprendeteli mentre gli altri trasferimenti sono ancora attivi. Osservate l'accettazione delle nuove connessioni, la temporizzazione dei tentativi, la velocità di caricamento, il testo degli errori del proxy, il tempo di risposta upstream e i descrittori di file aperti. Una richiesta sintetica che non carica mai un corpo non verifica lo stesso percorso delle risorse.
Se il proxy segnala che le connessioni worker sono esaurite nello stesso momento in cui i nuovi caricamenti falliscono, il limite è un collo di bottiglia confermato. Se le nuove richieste falliscono per dimensioni del corpo, timeout, indisponibilità dell'upstream o errori della coda dell'applicazione mentre l'utilizzo delle connessioni rimane al di sotto del limite, aumentare il valore dei worker non risolverà il problema. Un calcolo del limite delle connessioni deve comunque rispettare il limite dei file aperti e i socket sui due lati del proxy.
Modificate un livello alla volta. Aumentate il limite dei worker solo dopo che i log e le evidenze sui socket lo hanno identificato come causa, ricaricate la configurazione del proxy e ripetete lo stesso schema di interruzione. Se l'errore si sposta al servizio upstream o al limite dei descrittori di file, fermatevi: avete raggiunto il vincolo successivo, non dimostrato che siano utili ancora più connessioni del proxy.
Mantenete un margine sufficiente e definite la condizione di arresto
Mantenete un margine tra il worker più impegnato osservato e il limite configurato, ma definite tale margine in base alle variazioni reali. Un server di piccole dimensioni con traffico domestico stabile richiede meno riserva teorica rispetto a un servizio pubblico che riceve picchi imprevedibili. Registrate il valore di riferimento, l'obiettivo, il numero di worker, il limite dei file del processo e il risultato massimo, così la modifica successiva potrà essere confrontata anziché stimata.
La capacità delle connessioni è solo un livello del percorso di caricamento. Quando una dashboard funziona ma uno specifico percorso di sincronizzazione o caricamento non riesce, è comunque necessario isolare l'endpoint e il metodo che generano il problema prima di considerare il proxy affidabile.
La modifica è riuscita quando due test completi di ripresa terminano correttamente, le nuove connessioni continuano a essere accettate, i log degli errori rimangono puliti e il worker più impegnato conserva un margine stabile. Eseguite il rollback dell'aumento se la pressione sulla memoria o la latenza peggiorano senza ridurre gli errori. Passate al livello dell'applicazione o dello storage quando l'utilizzo delle connessioni è comodamente al di sotto del limite, ma i caricamenti continuano a rimanere in coda, andare in timeout o danneggiare il loro stato di ripresa.
Supporto e consigli
Altro da leggere

Come pianificare i processi Restic di backup, Forget e Prune senza conflitti di blocco
Una pianificazione completa di Restic per più host, che separa i backup frequenti, la conservazione con ambito definito, il prune fisico, i controlli, i...

Come impedire che i processi di eliminazione di Restic blocchino i backup programmati
Un piano di prevenzione per i repository Restic condivisi che separa le finestre di backup da prune e mantiene intatti i blocchi, i tentativi...

Come rimuovere un blocco Restic obsoleto senza interrompere un backup attivo
Un flusso di sblocco di Restic il meno invasivo possibile, che protegge i backup attivi, rimuove solo lo stato obsoleto e conferma il ripristino...

