Sådan øger du grænsen for antallet af åbne filer i Linux

I Linux kan du ændre det maksimale antal åbne filer. Du kan ændre dette antal ved at bruge kommandoen ulimit. Den giver dig mulighed for at kontrollere de ressourcer, der er tilgængelige for shell’en eller den proces, der startes af den.

Læs også: I denne korte vejledning vil vi vise dig, hvordan du kan kontrollere din nuværende grænse for åbne filer og filbeskrivelser, men for at gøre det, skal du have root-adgang til dit system.

Først skal vi se, hvordan vi kan finde ud af det maksimale antal åbne filbeskrivelser på dit Linux-system.

Find Linux Open File Limit

Værdien er gemt i:

# cat /proc/sys/fs/file-max818354

Tallet, du vil se, viser antallet af filer, som en bruger kan have åbnet pr. login-session. Resultatet kan være forskelligt afhængigt af dit system.

For eksempel var grænsen på en af mine CentOS-servere indstillet til 818354, mens den på Ubuntu-serveren, som jeg kører derhjemme, var standardgrænsen indstillet til 176772.

Hvis du vil se de hårde og bløde grænser, kan du bruge følgende kommandoer:

Check Hard Limit in Linux

# ulimit -Hn4096

Check Soft Limits in Linux

# ulimit -Sn1024

For at se de hårde og bløde værdier for forskellige brugere, kan du blot skifte bruger med “su” til den bruger, hvis grænser du vil tjekke.

For eksempel:

# su marin$ ulimit -Sn1024
$ ulimit -Hn4096

Sådan tjekker du grænser for systembrede fildeskriptorer i Linux

Hvis du kører en server, kan nogle af dine programmer kræve højere grænser for åbnede fildeskriptorer. Et godt eksempel på sådanne er MySQL/MariaDB-tjenester eller Apache-webserveren.

Du kan øge grænsen for åbnede filer i Linux ved at redigere kernedirektivet fs.file-max. Til det formål kan du bruge værktøjet sysctl.

Sysctl bruges til at konfigurere kerneparametre på køretid.

For eksempel kan du for at øge grænsen for åbne filer til 500000 bruge følgende kommando som root:

# sysctl -w fs.file-max=500000

Du kan kontrollere den aktuelle værdi for åbnede filer med følgende kommando:

$ cat /proc/sys/fs/file-max

Med ovenstående kommando forbliver de ændringer, du har foretaget, kun aktive indtil den næste genstart. Hvis du ønsker at anvende dem permanent, skal du redigere følgende fil:

# vi /etc/sysctl.conf

Føj følgende linje til:

fs.file-max=500000

Selvfølgelig kan du ændre tallet efter dine behov. For at bekræfte ændringerne igen skal du bruge:

# cat /proc/sys/fs/file-max

Brugerne skal logge ud og logge ind igen, for at ændringerne kan træde i kraft. Hvis du ønsker at anvende begrænsningen med det samme, kan du bruge følgende kommando:

# sysctl -p

Set User Level Open File limits in Linux

De ovenstående eksempler viste, hvordan du indstiller globale begrænsninger, men du ønsker måske at anvende begrænsninger på brugerbasis. Til det formål skal du som bruger root redigere følgende fil:

# vi /etc/security/limits.conf

Hvis du er Linux-administrator, vil jeg foreslå dig, at du bliver meget fortrolig med denne fil, og hvad du kan gøre ved den. Læs alle kommentarerne i den, da den giver stor fleksibilitet med hensyn til styring af systemressourcer ved at begrænse brugere/grupper på forskellige niveauer.

De linjer, du skal tilføje, tager følgende parametre:

<domain> <type> <item> <value>

Her er et eksempel på indstilling af en blød og hård grænse for brugeren marin:

## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024

Sluttanker

Denne korte artikel viste dig et grundlæggende eksempel på, hvordan du kan kontrollere og konfigurere globale og brugerniveau-grænser for det maksimale antal åbnede filer.

Mens vi kun skrabede på overfladen, vil jeg stærkt opfordre dig til at kigge og læse mere detaljeret om /etc/sysctl.conf og /etc/security/limits.conf og lære at bruge dem. De vil være til stor hjælp for dig en dag.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.