Home
» Come fare
»
Aumenta il limite di memoria del contenitore CODE senza fare supposizioni
Aumenta il limite di memoria del contenitore CODE senza fare supposizioni
Per assegnare più memoria a un container Collabora Online CODE, aumenta il limite di Docker nella configurazione che lo crea, quindi ricrea il container e verifica il limite effettivo con docker inspecto docker stats. L'aumento di un'impostazione dell'applicazione non aumenta il limite dei container di Docker e l'host o la macchina virtuale Docker Desktop devono disporre di memoria sufficiente per rispettare un limite superiore.
Esempio ipotetico utilizzato in tutto il testo: Riley gestisce un'implementazione Docker Compose su un singolo host. Supponiamo che docker statsvenga visualizzato un limite di 2 GiB e che l'utilizzo si avvicini a tale limite mentre sono aperti diversi documenti. Riley sta valutando un limite di 4 GiB. Questi numeri sono solo esempi e non costituiscono una raccomandazione di dimensionamento di Collabora, una dichiarazione sulle prestazioni o un risultato di test; il limite effettivo dovrebbe essere determinato dal carico osservato e dalla capacità dell'host.
1. Verificare che il contenitore stia effettivamente raggiungendo il suo limite massimo.
Esegui questi comandi sull'host Docker, sostituendo collaboracon il nome effettivo del container:
docker statsMostra l'utilizzo corrente e il limite del container. L'output di inspect riporta il limite di memoria configurato in byte e se Docker registra il container come terminato per esaurimento della memoria (OOM-killed). Un valore di inspect pari a 0significa che Docker non ha un limite rigido esplicito per quel container; non significa che la macchina abbia RAM illimitata. Un valore elevato da solo non è prova di un evento di esaurimento della memoria, quindi confrontalo con la cronologia dei riavvii, i log e l'ora in cui gli utenti hanno riscontrato errori.
Esempio diagnostico ipotetico: il contenitore CODE si sta avvicinando al limite massimo configurato di 2 GiB.
Prima di aumentare il limite, verifica quanta RAM rimane disponibile per il sistema operativo e gli altri servizi. Le linee guida di Docker sulle risorse raccomandano di testare il fabbisogno di memoria dell'applicazione ed eseguire i container su host con risorse adeguate. Con Docker Desktop, controlla anche Impostazioni > Risorse : la memoria assegnata alla VM Docker rappresenta un limite separato condiviso dai suoi container. Aumentare il limite di CODE oltre tale allocazione non può creare ulteriore memoria fisica; consulta le impostazioni delle risorse di Docker Desktop .
2. Modificare il limite del servizio Compose
Modifica il servizio CODE esistente nel tuo file Compose. Mantieni il tag immagine, le porte, l'ambiente, i volumi, le reti e i criteri di riavvio correnti; aggiungi o aggiorna solo l'impostazione della memoria. Per l'esempio ipotetico di Riley da 4 GiB:
Esempio di composizione: impostare il limite di memoria a livello di servizio mantenendo il tag dell'immagine CODE distribuita.
Questo esempio utilizza l'immagine Docker CODE ufficiale di Collabora ; mantieni il tag già utilizzato dalla tua distribuzione. mem_limitè un limite massimo, non una prenotazione: Docker può consentire al container di utilizzare fino a tale quantità, ma l'impostazione non riserva tale quantità di RAM sull'host. Il riferimento al servizio Docker Compose definisce mem_limite afferma che deve essere coerente con deploy.resources.limits.memoryse entrambi sono presenti. Se la tua distribuzione utilizza un orchestratore o un file Compose gestito dalla piattaforma, utilizza il campo delle risorse supportate da tale piattaforma e mantieni coerenti i valori dei limiti duplicati.
Se hai avviato CODE direttamente con docker run, ricrealo dal comando originale con --memory=4ge mantieni tutte le sue opzioni correnti. Per una rapida modifica in fase di esecuzione di un container Linux esistente, Docker supporta anche docker update --memory 4g <container_name>. Considera il file Compose o il comando di esecuzione originale come fonte di verità in modo che una successiva sostituzione non ripristini il vecchio cap. Consulta la documentazione di riferimento sull'aggiornamento dei container Docker .
3. Ricrea il CODICE affinché il limite salvato abbia effetto
Dalla directory contenente il file Compose attivo, convalida la configurazione unita, quindi ricrea solo il servizio CODE:
docker compose config
docker compose up -d --no-deps --force-recreate collabora
Utilizzare la chiave di servizio dal file al posto di collabora. Rivedere la configurazione renderizzata per il nuovo limite prima di applicarlo. La ricreazione di CODE interrompe brevemente le sessioni di modifica che dipendono da quel contenitore, quindi pianificare la modifica quando una breve interruzione del servizio è accettabile. Non rimuovere volumi o eseguire docker compose down -v; tali operazioni non sono necessarie per una modifica del limite di memoria e possono eliminare dati persistenti appartenenti ad altri servizi.
Applica la configurazione di Compose modificata e ricrea solo il servizio CODE.
4. Verificare il nuovo condensatore e controllarne il comportamento sotto carico
Una volta che il servizio torna disponibile, verifica il contenitore effettivo, non solo il file YAML:
Per il valore di esempio 4g, l'output di ispezione dovrebbe rappresentare circa 4 GiB in byte e docker statsdovrebbe mostrare un limite vicino a 4 GiB. L'immagine seguente utilizza un output di esempio solo a scopo illustrativo. Quindi osserva il CODICE durante l'apertura dei tipi di documento e il numero approssimativo di sessioni simultanee rilevanti per la tua distribuzione. Verifica che il container rimanga in esecuzione, che gli errori visibili all'utente cessino e che l'host mantenga la memoria per gli altri processi.
Schema di verifica previsto per la configurazione fittizia da 4 GiB; i valori visualizzati sono un esempio di output, non un'implementazione misurata.
Se il problema persiste
Se il nuovo limite è presente ma CODE continua a riavviarsi, ispeziona docker inspectlo stato docker logse gli eventi del kernel o di Docker dell'host per individuare un record di memoria insufficiente. Se il container rimane integro ma l'elaborazione dei documenti continua ad attivare la pulizia, Docker potrebbe non essere il collo di bottiglia attivo. coolwsdLa configurazione di Collabora ha un comportamento di gestione della memoria separato dal limite del cgroup di Docker; il modello di configurazione del progetto documenta i controlli lato server. Verifica la configurazione della versione di CODE installata prima di modificarla.
Non risolvete l'incertezza impostando la memoria del container su illimitata o disabilitando il killer in caso di memoria insufficiente. Docker avverte che un container con memoria illimitata può contribuire all'esaurimento della memoria dell'host e influire su servizi non correlati. Se l'host non dispone di un margine di sicurezza sufficiente, la soluzione migliore è aumentare la capacità dell'host o della macchina virtuale Docker, ridurre il carico di lavoro simultaneo o distribuire il lavoro, non aumentare il limite oltre la RAM disponibile.