Idag kraschade min server med Too many open files in system:
men jag har redan höga värden, vad är ett maximivärde för detta?
Jag tycker att det inte finns några bra resultat på google för detta, förklarar vad som måste tas i beaktande för att ställa in dessa värden, de säger bara att ställa in det till 100k.
Jag har en 32 GB RAM-server som bara använder 10 GB just nu, jag antar att en ökning av filgränserna till mycket höga värden kommer att öka RAM-användningen, finns det någon form av formel som du kan använda för att beräkna detta? Som för 8 GB RAM du kan ha X-antal filer öppna?
Aktuella inställningar:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Kommentarer
Svar
Som Kusalananda säger ökar file-max
kommer inte att påverka minnesanvändningen direkt, men det kommer att göra det möjligt för processer att öppna fler filbeskrivare som kommer att ha en knock-on-effekt (både från spårning av filbeskrivningar i kärnan och ökat minne användning i de processer som använder dessa beskrivningar och beskrivningar) – kärnkommentarerna föreslår ungefär en kilobyte per fil för kärnans data och minskar standardvärdet för file-max
(8192) om det slutar upp representerar mer än 10% av minnet när systemet startar ( dvs. det finns bara 80 MiB RAM). Det maximala värdet som införs av kärnan är det maximala värdet som kan lagras i en variabel av typen long
i C i din arkitektur.
Om du ökar file-max
, du bör också öka inode-max
; kärndokumentationen säger att detta borde vara ”3-4 gånger större än värdet i filmax, eftersom stdin, stdout och nätverksuttag också behöver en inodestruktur för att hantera dem ” ”, Med lämpligt värde för n . Om du inte har det i dina loggar slår du antingen inte file-max
eller filtrerar dina loggar för mycket (det är ett loggmeddelande på informationsnivå).
(file-max
begränsar inte processer med CAP_SYS_ADMIN
, så att träffar det kommer inte att stoppa allt.)
Kommentarer
- Så det finns ingen nackdel med att ha godtyckligt höga siffror? Jag ser ' t
inode-max
i mitt system någonstans? Ubuntu 16.04 här. Jag vill bara förhindra att min server kraschar igen, jag kör flera webbtjänster på denna server och ' bryr mig inte om resursanvändning - Nackdelen är att runaway-processer kommer inte att fångas av den övergripande gränsen för filbeskrivningar, så de kan orsaka svält på andra sätt.
ulimit
kommer att visa / ställa in en resursbegränsning per process.