Sådan øges antallet af åbne filer i Linux


I Linux kan du ændre det maksimale antal åbne filer. Du kan ændre dette nummer ved hjælp af kommandoen ulimit. Det giver dig muligheden for at kontrollere de tilgængelige ressourcer til skallen eller den proces, der startes af den.

I denne korte vejledning viser vi dig, hvordan du kontrollerer din nuværende grænse for åbne filer og filbeskrivelser, men for at gøre det skal du have rootadgang til dit system.

Lad os først se, hvordan vi kan finde ud af det maksimale antal åbnede filbeskrivelser på dit Linux-system.

Find Linux Open File Limit

Værdien er gemt i:

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

818354

Det nummer, du ser, 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 på en af min CentOS-servere var grænsen sat til 818354, mens standardgrænsen på Ubuntu-server, som jeg kører hjemme, var sat til 176772.

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

# ulimit -Hn

4096
# ulimit -Sn

1024

For at se de hårde og bløde værdier for forskellige brugere, kan du blot skifte bruger med “su” til brugeren, hvilket begrænser du vil kontrollere.

For eksempel:

# su marin
$ ulimit -Sn

1024
$ ulimit -Hn

4096

Sådan kontrolleres systemdækkende filbeskrivelsesgrænser i Linux

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

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

Sysctl bruges til at konfigurere kerneparametre under kørsel.

For eksempel for at øge den åbne filgrænse til 500000 kan du 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 næste genstart. Hvis du ønsker at anvende dem permanent, skal du redigere følgende fil:

# vi /etc/sysctl.conf

Tilføj følgende linje:

fs.file-max=500000

Selvfølgelig kan du ændre antallet efter dine behov. Brug følgende for at bekræfte ændringerne:

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

Brugere skal logge ud og logge ind igen for at ændringerne kan træde i kraft. Hvis du vil anvende grænsen med det samme, kan du bruge følgende kommando:

# sysctl -p

Indstil begrænsninger for åbne filniveauer på brugerniveau i Linux

Ovenstående eksempler viste, hvordan man indstiller globale grænser, men det kan være en god idé at anvende grænser pr. Brugerbasis. Til dette formål skal du som brugerrod redigere følgende fil:

# vi /etc/security/limits.conf

Hvis du er Linux-administrator, foreslår jeg dig, at du bliver meget fortrolig med den fil, og hvad du kan gøre for den. Læs alle kommentarerne i det, da det 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 bløde og hårde grænser for bruger marin:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

Afsluttende tanker

Denne korte artikel viste dig et grundlæggende eksempel på, hvordan du kan kontrollere og konfigurere globale og brugerniveaugrænser for maksimalt antal åbnede filer.

Mens vi lige ridsede overfladen, opfordrer jeg dig stærkt til at få et mere detaljeret kig og læse 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.