Vandaag crashte mijn server met Too many open files in system:
maar ik hebben al hoge waarden, wat is hiervoor een maximale waarde?
Ik heb het gevoel dat er hier geen goede resultaten op Google voor zijn, waarin wordt uitgelegd waar rekening mee moet worden gehouden bij het instellen van die waarden, ze zeggen gewoon om het in te stellen op 100k.
Ik heb een 32 GB RAM-server die momenteel slechts 10 GB gebruikt, ik neem aan dat het verhogen van de bestandslimieten tot zeer hoge waarden het RAM-gebruik zal verhogen, is er een soort formule die u kunt gebruiken om dit te berekenen? Zoals voor 8 GB RAM die u kan X aantal bestanden geopend hebben?
Huidige instellingen:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Reacties
Antwoord
Zoals Kusalananda zegt, stijgt file-max
heeft niet direct invloed op het geheugengebruik, maar het zal processen toestaan om meer bestandsdescriptors te openen, wat een domino-effect heeft (zowel door het volgen van bestandsbeschrijvingen in de kernel, als door meer geheugen gebruik in de processen die die beschrijvingen en descriptoren gebruiken) – de kernelcommentaar suggereert ongeveer één kilobyte per bestand voor de gegevens van de kernel, en zal de standaardwaarde van file-max
(8192) verminderen als dat eindigt up vertegenwoordigt meer dan 10% van het geheugen wanneer het systeem opstart ( dwz er is slechts 80 MiB RAM). De maximale waarde opgelegd door de kernel is de maximale waarde die kan worden opgeslagen in een variabele van het type long
in C op je architectuur.
Als je file-max
, u moet ook inode-max
; de kerneldocumentatie zegt dat dit “3-4 keer groter moet zijn dan de waarde in file-max, aangezien stdin, stdout en netwerksockets ook een inode-structuur nodig hebben om behandel ze. ”
Merk op dat het raken van file-max
zal resulteren in een kernellogbericht met de melding” VFS: file-max limit n bereikt ”, Met de juiste waarde voor n . Als u dat niet in uw logboeken heeft, slaat u ofwel niet op file-max
, of filtert u uw logboeken te veel (het is een logbericht op info-niveau).
(file-max
beperkt processen niet met CAP_SYS_ADMIN
, dus door erop te slaan zal niet alles stoppen.)
Reacties
- Er is dus geen keerzijde aan het hebben van willekeurig hoge cijfers? Ik ' zie
inode-max
toch niet in mijn systeem? Ubuntu 16.04 hier. Ik wil gewoon voorkomen dat mijn server opnieuw crasht, ik draai meerdere webservices op deze server en ' geef me niet om het gebruik van bronnen - Het nadeel is dat processen op hol slaan wordt niet betrapt door de algemene limiet voor bestandsbeschrijvingen, dus ze kunnen op andere manieren uithongering van bronnen veroorzaken.
ulimit
toont / stelt een resourcelimiet per proces in.