Kako povečati število odprtih datotek v Linuxu


V Linuxu lahko spremenite največjo količino odprtih datotek. To številko lahko spremenite z ukazom ulimit. Omogoča vam nadzor nad viri, ki so na voljo za lupino ali postopek, ki ga je začel.

V tej kratki vadnici vam bomo pokazali, kako preverite trenutno omejitev odprtih datotek in opise datotek, vendar boste za to morali imeti korenski dostop do sistema.

Najprej si oglejmo, kako lahko ugotovimo največje število odprtih deskriptorjev datotek v vašem sistemu Linux.

Poiščite Linux Open File Limit

Vrednost je shranjena v:

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

818354

Številka, ki jo boste videli, prikazuje število datotek, ki jih je uporabnik lahko odprl na prijavno sejo. Rezultat je lahko drugačen, odvisno od vašega sistema.

Na primer na mojem strežniku CentOS je bila omejitev nastavljena na 818354, medtem ko je bila na strežniku Ubuntu, ki ga izvajam doma, privzeta omejitev 176772.

Če želite videti trde in mehke omejitve, lahko uporabite naslednje ukaze:

# ulimit -Hn

4096
# ulimit -Sn

1024

Če si želite ogledati trde in mehke vrednosti za različne uporabnike, lahko preprosto preklopite uporabnika z “su” na uporabnika, katere omejitve želite preveriti.

Na primer:

# su marin
$ ulimit -Sn

1024
$ ulimit -Hn

4096

Kako preveriti sistemske omejitve deskriptorjev datotek v Linuxu

Če uporabljate strežnik, bodo nekatere vaše aplikacije morda zahtevale višje omejitve za deskriptorje odprtih datotek. Dober primer za to so storitve MySQL/MariaDB ali spletni strežnik Apache.

Omejitev odprtih datotek v Linuxu lahko povečate tako, da uredite jedrno direktivo fs.file-max . V ta namen lahko uporabite pripomoček sysctl.

Sysctl se uporablja za konfiguriranje parametrov jedra med izvajanjem.

Če želite na primer povečati omejitev odprtih datotek na 500000, lahko kot root uporabite naslednji ukaz:

# sysctl -w fs.file-max=500000

Trenutno vrednost odprtih datotek lahko preverite z naslednjim ukazom:

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

Z zgornjim ukazom bodo spremembe, ki ste jih izvedli, ostale aktivne le do naslednjega ponovnega zagona. Če jih želite trajno uporabljati, boste morali urediti naslednjo datoteko:

# vi /etc/sysctl.conf

Dodajte naslednjo vrstico:

fs.file-max=500000

Seveda lahko številko spremenite glede na vaše potrebe. Če želite znova preveriti spremembe, uporabite:

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

Uporabniki se bodo morali odjaviti in znova prijaviti, da bodo spremembe začele veljati. Če želite omejitev uporabiti takoj, lahko uporabite naslednji ukaz:

# sysctl -p

V Linuxu nastavite omejitve odprtih datotek na ravni uporabnika

Zgornji primeri so pokazali, kako nastaviti globalne omejitve, vendar boste morda želeli uporabiti omejitve na osnovi uporabnika. V ta namen boste kot uporabniški koren morali urediti naslednjo datoteko:

# vi /etc/security/limits.conf

Če ste skrbnik Linuxa, predlagam, da se dobro seznanite s to datoteko in kaj lahko z njo storite. Preberite vse komentarje v njem, saj zagotavlja veliko prilagodljivost pri upravljanju sistemskih virov z omejevanjem uporabnikov/skupin na različnih ravneh.

Vrstice, ki jih morate dodati, imajo naslednje parametre:

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

Tu je primer določanja mehkih in strogih omejitev za uporabniško marino:

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

Zadnje misli

Ta kratek članek vam je pokazal osnovni primer, kako lahko preverite in konfigurirate globalne in uporabniške omejitve za največje število odprtih datotek.

Medtem ko smo ravno opraskali površino, vam toplo priporočam, da si podrobneje ogledate in preberete v zvezi z /etc/sysctl.conf in /etc/security/limits.conf ter se naučite, kako jih uporabljati. Nekega dne vam bodo v veliko pomoč.