I dag styrtede min server ned med Too many open files in system:
men jeg allerede har høje værdier, hvad er en maksimumsværdi for dette?
Jeg har lyst til, at der ikke er gode resultater på google for dette og forklarer, hvad der skal tages i betragtning ved indstilling af disse værdier, de siger bare at indstille det til 100k.
Jeg har en 32 GB RAM-server, der kun bruger 10 GB lige nu, jeg antager at øge filgrænserne til meget høje værdier vil øge RAM-brugen, er der en formel, du kan bruge til at beregne dette? Ligesom for 8 GB RAM dig kan have X antal filer åbne?
Nuværende indstillinger:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Kommentarer
Svar
Som Kusalananda siger, øges file-max
har ikke direkte indflydelse på hukommelsesforbruget, men det giver processer mulighed for at åbne flere filbeskrivere, som har en knock-on-effekt (både fra sporing af filbeskrivelser i kernen og øget hukommelse brug i processerne ved hjælp af disse beskrivelser og beskrivelser) – kernekommentarerne foreslår cirka en kilobyte pr. fil til kernedataene og reducerer standardværdien på file-max
(8192), hvis det ender op repræsenterer mere end 10% af hukommelsen, når systemet starter ( dvs. der er kun 80 MiB RAM). Den maksimale værdi, som kernen pålægges, er den maksimale værdi, der kan gemmes i en variabel af typen long
i C i din arkitektur.
Hvis du øger file-max
, skal du også øge inode-max
; kernedokumentationen siger, at dette skal være “3-4 gange større end værdien i fil-max, da stdin, stdout og netværksstik også har brug for en inode-struktur til håndter dem. ”
Bemærk at at trykke på file-max
vil resultere i en kernelogmeddelelse, der siger” VFS: fil-maks grænse n nået ”, Med den passende værdi for n . Hvis du ikke har det i dine logfiler, rammer du enten ikke file-max
eller filtrerer dine logfiler ikke for meget (det er en logmeddelelse på infoniveau).
(file-max
begrænser ikke processer med CAP_SYS_ADMIN
, så når du rammer det, stopper det ikke alt.)
Kommentarer
- Så der er ingen ulempe ved at have vilkårligt høje tal? Jeg ser ' ikke
inode-max
i mit system nogen steder? Ubuntu 16.04 her. Jeg vil bare forhindre, at min server går ned igen, jeg kører flere webtjenester på denne server og ' er ligeglad med ressourceudnyttelse - Ulempen er, at løbende processer bliver ikke fanget af den overordnede grænse for filbeskrivelser, så de kan forårsage ressourceudsultning på andre måder.
ulimit
vil vise / indstille en ressourcebegrænsning pr. proces.