Acasă
» Cum să
»
Măriți limita de memorie a containerului CODE fără a ghici
Măriți limita de memorie a containerului CODE fără a ghici
Pentru a oferi unui container CODE Collabora Online mai multă memorie, creșteți limita Docker în configurația care îl creează, apoi recreați containerul și confirmați limita efectivă cu docker inspectsau docker stats. Creșterea unei setări a aplicației nu crește limita containerelor Docker, iar mașina virtuală gazdă sau Docker Desktop trebuie să aibă suficientă memorie disponibilă pentru a onora o limită mai mare.
Exemplu ipotetic utilizat pe tot parcursul: Riley administrează o implementare Docker Compose cu o singură gazdă. Să presupunem că docker statsarată o limită de 2 GiB și o utilizare apropiată de acest plafon, în timp ce mai multe documente sunt deschise. Riley ia în considerare o limită de 4 GiB. Aceste numere sunt doar exemple, nu o recomandare de dimensionare Collabora, o afirmație de performanță sau un rezultat testat; limita dvs. ar trebui să provină din sarcina observată și din capacitatea gazdei.
1. Confirmați că recipientul atinge efectiv capacul
Executați aceste comenzi pe gazda Docker, înlocuind-le collaboracu numele real al containerului:
docker statsarată utilizarea curentă și limita containerului. Rezultatul inspect raportează limita de memorie configurată în octeți și dacă Docker înregistrează containerul ca fiind închis prin OOM. O valoare inspect de 0înseamnă că Docker nu are o limită fixă explicită pentru acel container; nu înseamnă că mașina are RAM nelimitat. O citire mare nu este în sine o dovadă a unui eveniment de memorie insuficientă, așa că o comparați cu istoricul de repornire, jurnalele și momentul în care utilizatorii au observat erori.
Exemplu de diagnostic ipotetic: containerul CODE se apropie de plafonul configurat de 2 GiB.
Înainte de a crește limita, verificați câtă memorie RAM rămâne pentru sistemul de operare și alte servicii. Ghidul de resurse Docker recomandă testarea cererii aplicațiilor și rularea containerelor pe gazde cu resurse adecvate. Cu Docker Desktop, verificați și Setări > Resurse : memoria atribuită mașinii virtuale Docker este un plafon separat, partajat de containerele sale. Creșterea limitei CODE dincolo de această alocare nu poate crea mai multă memorie fizică; consultați setările de resurse Docker Desktop .
2. Modificați limita serviciului Compose
Editați serviciul CODE existent în fișierul Compose. Păstrați eticheta de imagine curentă, porturile, mediul, volumele, rețelele și politica de repornire; adăugați sau actualizați doar setarea de memorie. Pentru exemplul ipotetic de 4 GiB al lui Riley:
Exemplu de compunere: setați limita de memorie la nivel de serviciu, păstrând în același timp eticheta de imagine CODE implementată.
Acest exemplu folosește imaginea oficială CODE Docker de la Collabora ; păstrează eticheta deja utilizată de implementarea ta. mem_limiteste un plafon fix, nu o rezervare: Docker poate permite containerului să utilizeze până la această cantitate, dar setarea nu rezervă atât de multă RAM pe gazdă. Referința serviciului Docker Compose definește mem_limitși spune că trebuie să fie de acord cu deploy.resources.limits.memorydacă ambele sunt prezente. Dacă implementarea ta utilizează un orchestrator sau un fișier Compose gestionat de platformă, folosește câmpul de resurse acceptat de platforma respectivă și păstrează consecvența valorilor limită duplicate.
Dacă ați pornit CODE direct cu docker run, recreați-l din comanda originală cu --memory=4gși păstrați toate opțiunile sale actuale. Pentru o modificare rapidă în timpul execuției la un container Linux existent, Docker acceptă și docker update --memory 4g <container_name>. Tratați fișierul Compose sau comanda originală de executare ca sursă de adevăr, astfel încât o înlocuire ulterioară să nu restabilească vechiul plafon. Consultați referința de actualizare a containerului Docker .
3. Recreați CODUL astfel încât limita salvată să aibă efect
Din directorul care conține fișierul Compose activ, validați configurația îmbinată, apoi recreați doar serviciul CODE:
docker compose config
docker compose up -d --no-deps --force-recreate collabora
Folosește cheia de serviciu din fișierul tău în locul lui collabora. Verifică configurația redată pentru noua limită înainte de a o aplica. Recrearea CODULUI întrerupe scurt sesiunile de editare care depind de containerul respectiv, așadar planifică modificarea atunci când o scurtă întrerupere a serviciului este acceptabilă. Nu elimină volume și nu rulează docker compose down -v; aceste operațiuni nu sunt necesare pentru o modificare a limitei de memorie și pot șterge datele persistente aparținând altor servicii.
Aplicați configurația Compose editată și recreați doar serviciul CODE.
4. Verificați noul capac și comportamentul sub sarcină
După ce serviciul returnează, verificați containerul propriu-zis - nu doar fișierul YAML:
Pentru valoarea exemplu 4g, rezultatul inspectării ar trebui să reprezinte aproximativ 4 GiB în octeți și docker statsar trebui să afișeze o limită apropiată de 4 GiB. Imaginea de mai jos utilizează un exemplu de rezultat doar pentru ilustrare. Apoi, observați CODUL în timp ce deschideți tipurile de documente și numărul aproximativ de sesiuni simultane care contează pentru implementarea dvs. Confirmați că containerul continuă să ruleze, că erorile vizibile utilizatorului se opresc și că gazda păstrează memoria pentru celelalte procese ale sale.
Model de verificare așteptat pentru configurația fictivă de 4 GiB; aceste valori afișate reprezintă un exemplu de ieșire, nu o implementare măsurată.
Dacă problema persistă
Dacă noua limită este prezentă, dar CODE repornește în continuare, verificați docker inspectstarea , docker logs, și evenimentele kernelului gazdei sau Docker pentru o înregistrare de memorie insuficientă. Dacă containerul rămâne sănătos, dar procesarea documentelor declanșează în continuare curățarea, este posibil ca Docker să nu fie blocajul activ. Configurația proprie a Collabora are un comportament de gestionare a memoriei separat de limita cgroup-ului Docker; șablonul de configurarecoolwsd al proiectului documentează controalele sale pe server. Verificați configurația pentru versiunea de CODE instalată înainte de a o modifica.
Nu rezolvați incertitudinea setând containerul la memorie nelimitată sau dezactivând funcția „out-of-memory killer”. Docker avertizează că un container nelimitat poate contribui la epuizarea memoriei gazdei și la afectarea serviciilor nelegate. Dacă gazda nu are un spațiu de stocare sigur, soluția reală este adăugarea capacității gazdei sau a mașinii virtuale Docker, reducerea volumului de lucru concurent sau distribuirea muncii - nu creșterea limitei dincolo de memoria RAM disponibilă.