Budgetera minne för heap- eller buffertpooler samt inbyggd minnesanvändning, sidcache, trådar och återställningskostnader; den synliga heapen är inte containerns totala minnesmängd.
Detta är viktigt på en delad hemmaserver där en JVM-app och en databas konkurrerar med NAS:ens sidcache. Den operativa risken är att en gräns som sätts lika med heapstorleken leder till OOM-avslutningar, medan avsaknad av gräns gör att en arbetsbelastning tränger undan alla andra tjänster. Börja med en sparad baslinje, gör en reversibel ändring i taget och avbryt så snart det observerade resultatet inte längre överensstämmer med den avsedda konfigurationsvägen.
Fastställ baslinjen för containerminnesgränser för JVM:er och databaser
Innan du ändrar inställningar ska du registrera containerns arbetsmängd, RSS, sidcache, JVM:ens inbyggda minne, databuffertar, växlingsutrymme, OOM-händelser och fördröjning under maximal belastning. Spara den ursprungliga konfigurationen och en körning som liknar produktion, så att senare förbättringar jämförs med samma arbetsbelastning i stället för med minne eller ett syntetiskt viloläge.
Använd de aktuella begränsningarna för containerminne för att bekräfta vilken kontroll som stöds och hur den fungerar. Betrakta standardvärden som en känd utgångspunkt, inte som ett bevis på att inställningen passar den här servern, klientblandningen eller återställningsmålet.
Definiera godkännande- och stoppvillkor innan du redigerar. Godkännandesignalen måste vara synlig i loggar, protokollstatus, applikationsutdata eller återställda data; stoppvillkoret måste förhindra bredare åtkomst, dataförlust, resursbrist eller ett avbrott som förbrukar nästa återställningsfönster.
Tillämpa ändringen av containerminnesgränser för JVM:er och databaser i kontrollerade steg
Steg 1: Mät en obegränsad men kontrollerad maximal arbetsbelastning och skilj återvinningsbar cache från resident minnesanvändning som inte kan återvinnas. Inspektera det förväntade tillståndet omedelbart efter ändringen; om det inte visas ska du ångra detta steg innan du tillämpar nästa.
Steg 2: Ställ in applikationsanpassade mål för heap eller buffertar under containergränsen och reservera värdminne för kärnan och lagringscachen. Inspektera det förväntade tillståndet omedelbart efter ändringen; om det inte visas ska du ångra detta steg innan du tillämpar nästa.
Steg 3: Lägg till en varningströskel före hårdgränsen och minska samtidigheten när ett ihållande tryck uppstår. Inspektera det förväntade tillståndet omedelbart efter ändringen; om det inte visas ska du ångra detta steg innan du tillämpar nästa.
services:
app:
mem_limit: 4g
environment:
JAVA_TOOL_OPTIONS: "-Xms1g -Xmx3g"
Tolka grenarna för godkänt, underkänt och undantag
Ett godkänt resultat innebär att den maximala arbetsbelastningen håller sig under varningsmarginalen utan växlingsöverbelastning, OOM-avslutningar eller försämrad lagringsfördröjning. Dokumentera den exakta arbetsbelastningen, versionen och tidpunkten som gav resultatet; ett lättare test är inget bevis på att det ursprungliga problemet har lösts.
Ett underkänt resultat innebär att kärnan avslutar processen, att JVM:en inte kan reservera inbyggt minne eller att databasen upprepade gånger tränger undan användbar cache. Försök inte kompensera genom att försvaga alla närliggande kontroller. Gå tillbaka till den senaste rena baslinjen och isolera om avvikelsen gäller identitet, nätverk, lagring, applikationsberedskap eller kapacitet.
Vid ett undantag eller ett tvetydigt resultat ska du återställa den senaste stabila gränsen och minska heapen, antalet anslutningar eller arbetarnas samtidighet innan du ökar trycket på värden. Eskalera först när den riskfattiga skiljande åtgärden kan upprepas och bevisen visar att en djupare plattforms- eller hårdvaruändring behövs.
Verifiera beständighet under den ursprungliga hemmaserverbelastningen
Upprepa samma klientväg, filstorlek, samtidighet, viloläge eller omstartssekvens och konkurrerande arbetsbelastning som användes i baslinjen. Kör minst två cykler så att en cacheuppvärmd framgång, en lyckosam återanslutning eller en enda felfri uppstart inte misstas för beständighet.
Bekräfta både framgång och begränsning: den maximala arbetsbelastningen håller sig under varningsmarginalen utan växlingsöverbelastning, OOM-avslutningar eller försämrad lagringsfördröjning, samtidigt som orelaterade användare, tjänster, resurser och administrativa vägar behåller sitt ursprungliga beteende. Läs igenom det relaterade ZimaSpace-arbetsflödet när ändringen berör en närliggande lagrings-, nätverks- eller återställningsgräns.
Avsluta ändringen först när godkännandesignalen kvarstår och återställningen fortfarande kan användas. Om kärnan avslutar processen, JVM:en inte kan reservera inbyggt minne eller databasen upprepade gånger tränger undan användbar cache ska du stoppa automatiseringen, bevara loggarna och den sparade konfigurationen och återgå till det senast verifierade tillståndet i stället för att stapla fler ändringar.
FAQ om frågeförgrening, avslutande beslut och sluttest
Dessa frågor om frågeförgrening täcker de nästa beslut som användare ofta söker efter att huvudkonfigurationen fungerar. De utökar gränsen utan att införa en oprövad reparationsväg.
Tillämpa varje svar endast när villkoret stämmer med den uppmätta miljön. Skillnader i version, protokoll, filsystem, klient och förtroendegräns kan ändra vilken gren som är korrekt.
Behåll svaren tillsammans med körboken och uppdatera dem efter uppgraderingar eller topologiförändringar. Alla undantag som utökar skrivåtkomst, nätverksräckvidd eller behörighet att radera kräver ett nytt test av återställning och återgång.
Ska Xmx vara lika med Dockers minnesgräns?
Nej. Lämna utrymme för metaspace, direktbuffertar, trådar, kodcache, inbyggda bibliotek och operativsystemets omkostnader.
Använder en databas minne utanför sin buffertpool?
Ja. Anslutningar, arbetsområden, underhåll, tillägg och filsystemcache kan väsentligt överstiga den konfigurerade poolen.
Är växlingsutrymme alltid skadligt?
Inte alltid, men ihållande växling under interaktivt arbete är ett starkt tecken på att minnesplanen eller samtidigheten är fel.
Slutsats: Konfigurationen är klar när den maximala arbetsbelastningen håller sig under varningsmarginalen utan växlingsöverbelastning, OOM-avslutningar eller försämrad lagringsfördröjning, felgrenen är förstådd och den dokumenterade återställningen inte är beroende av komponenten som ändras.
Protokoll för sluttest: Återställ den sparade baslinjen, tillämpa den godkända ändringen en gång, upprepa den ursprungliga produktionsliknande belastningen, verifiera framgångssignalen och begränsningsgränsen och testa sedan återställning med data som kan kastas. Behåll ändringen endast när alla fem observationer överensstämmer.
Support och tips
Mer att läsa

Guide till lagring av live-tv-inspelningar för kapacitet, lagringstid och rensning
Mät verkliga inspelningar, reservera marginal, kombinera gränser för ålder och kapacitet och bevisa att det äldsta berättigade programmet tas bort innan lagringen blir full.

Arbetsflöde för återställning av metadata för hemmamedia efter en databasåterställning
Skydda det återställda tillståndet, verifiera medieidentitet och sökvägar och reparera sedan saknade omslagsbilder eller matchningar i ett pilotbibliotek innan omfattande metadataändringar görs.

Kompatibilitetschecklista för Jellyfin-klienter för ljud, video och undertexter
Testa representativa filer med en variabel i taget och notera Direct Play, remuxning, ljudkonvertering, videotranskodning eller fel för varje klient.

