I dag krasjet serveren min med Too many open files in system:
men jeg allerede har høye verdier, hva er en maksimumsverdi for dette?
Jeg føler at det ikke er gode resultater på google for dette, og forklarer hva som må tas i betraktning for å sette disse verdiene, de sier bare å sette det til 100k.
Jeg har en 32 GB RAM-server som bare bruker 10 GB akkurat nå, jeg antar at økning av filgrensene til veldig høye verdier vil øke RAM-bruken, er det noen form for formel du kan bruke til å beregne dette? Som for 8 GB RAM du kan ha X-antall filer åpne?
Gjeldende innstillinger:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Kommentarer
Svar
Som Kusalananda sier, øker file-max
vil ikke direkte ha innvirkning på minnebruk, men det vil tillate prosesser å åpne flere filbeskrivere som vil ha en påkjøringseffekt (både fra sporing av filbeskrivelser i kjernen, og økt minne bruk i prosessene som bruker disse beskrivelsene og beskrivelsene) – kjernekommentarene antyder omtrent en kilobyte per fil for kjernedataene, og vil redusere standardverdien på file-max
(8192) hvis det ender representerer mer enn 10% av minnet når systemet starter opp ( dvs. det er bare 80 MiB RAM). Maksimumsverdien som kjernen pålegger er den maksimale verdien som kan lagres i en variabel av typen long
i C i arkitekturen.
Hvis du øker file-max
, bør du også øke inode-max
; kjernedokumentasjonen sier at dette skal være «3-4 ganger større enn verdien i filmax, siden stdin, stdout og nettverkskontakter også trenger en inode-struktur for å håndtere dem. ”
Merk at å trykke file-max
vil resultere i en kjerneloggmelding som sier» VFS: maks filgrense n nådd ”, Med riktig verdi for n . Hvis du ikke har det i loggene, treffer du ikke file-max
, eller filtrerer ikke loggene for mye (det er en loggmelding på informasjonsnivå).
(file-max
begrenser ikke prosesser med CAP_SYS_ADMIN
, så å slå på det vil ikke stoppe alt.)
Kommentarer
- Så det er ingen ulemper ved å ha vilkårlig høye tall? Jeg ser ikke '
inode-max
i systemet mitt noe? Ubuntu 16.04 her. Jeg vil bare forhindre at serveren min krasjer igjen, jeg kjører flere webtjenester på denne serveren og bryr meg ikke ' om ressursutnyttelse - Ulempen er at løpende prosesser blir ikke fanget av den generelle grensen for filbeskrivelser, slik at de kan forårsake ressurssult på andre måter.
ulimit
vil vise / angi en ressursgrense per prosess.