Kako povećati broj otvorenih datoteka u Linuxu


U Linuxu možete promijeniti maksimalnu količinu otvorenih datoteka. Ovaj broj možete izmijeniti pomoću naredbe ulimit. Omogućuje vam kontrolu nad resursima dostupnim za ljusku ili proces koji je započeo.

U ovom kratkom vodiču pokazat ćemo vam kako provjeriti trenutno ograničenje broja otvorenih datoteka i opise datoteka, ali da biste to učinili, morat ćete imati root pristup svom sustavu.

Prvo, Pogledajmo kako možemo saznati maksimalan broj deskriptora otvorenih datoteka na vašem Linux sustavu.

Pronađite ograničenje otvorene datoteke Linuxa

Vrijednost je pohranjena u:

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

818354

Broj koji ćete vidjeti prikazuje broj datoteka koje je korisnik mogao otvoriti po sesiji prijave. Rezultat se može razlikovati ovisno o vašem sustavu.

Na primjer, na mom CentOS poslužitelju ograničenje je postavljeno na 818354, dok je na Ubuntu poslužitelju koji radim kod kuće zadano ograničenje postavljeno na 176772.

Ako želite vidjeti tvrda i meka ograničenja, možete upotrijebiti sljedeće naredbe:

# ulimit -Hn

4096
# ulimit -Sn

1024

Da biste vidjeli tvrde i meke vrijednosti za različite korisnike, možete jednostavno prebaciti korisnika sa "su" na korisnika koji ograničenja želite provjeriti.

Na primjer:

# su marin
$ ulimit -Sn

1024
$ ulimit -Hn

4096

Kako provjeriti ograničenja deskriptora datoteka u sustavu u Linuxu

Ako imate poslužitelj, neke vaše aplikacije mogu zahtijevati veća ograničenja za deskriptore otvorenih datoteka. Dobar primjer za takve su MySQL/MariaDB usluge ili Apache web poslužitelj.

Možete povećati ograničenje otvorenih datoteka u Linuxu uređivanjem direktive jezgre fs.file-max . U tu svrhu možete koristiti uslužni program sysctl.

Sysctl se koristi za konfiguriranje parametara jezgre tijekom izvođenja.

Na primjer, da biste povećali ograničenje otvorene datoteke na 500000, možete koristiti sljedeću naredbu kao root:

# sysctl -w fs.file-max=500000

Trenutnu vrijednost za otvorene datoteke možete provjeriti sljedećom naredbom:

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

S gornjom naredbom promjene koje ste napravili ostat će aktivne samo do sljedećeg ponovnog pokretanja. Ako ih želite trajno primijeniti, morat ćete urediti sljedeću datoteku:

# vi /etc/sysctl.conf

Dodajte sljedeći redak:

fs.file-max=500000

Naravno, možete promijeniti broj prema svojim potrebama. Da biste ponovno provjerili promjene, upotrijebite:

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

Korisnici će se morati odjaviti i ponovo prijaviti kako bi promjene stupile na snagu. Ako želite odmah primijeniti ograničenje, možete upotrijebiti sljedeću naredbu:

# sysctl -p

Postavite ograničenja otvorenih datoteka na korisničkoj razini u Linuxu

Gornji primjeri pokazali su kako postaviti globalna ograničenja, ali možda ćete htjeti primijeniti ograničenja po osnovi korisnika. U tu svrhu, kao korijen korisnika, morat ćete urediti sljedeću datoteku:

# vi /etc/security/limits.conf

Ako ste Linux administrator, predlažem vam da se dobro upoznate s tom datotekom i što možete učiniti s njom. Pročitajte sve komentare u njemu jer pruža veliku fleksibilnost u pogledu upravljanja sistemskim resursima ograničavanjem korisnika/grupa na različitim razinama.

Redci koje biste trebali dodati imaju sljedeće parametre:

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

Evo primjera postavljanja mekih i tvrdih ograničenja za marinu korisnika:

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

Završne misli

Ovaj kratki članak pokazao vam je osnovni primjer kako možete provjeriti i konfigurirati globalna i ograničenja na razini korisnika za maksimalni broj otvorenih datoteka.

Iako smo samo ogrebali površinu, toplo vam potičem da detaljnije pogledate i pročitate vezano za /etc/sysctl.conf i /etc/security/limits.conf i naučite kako ih koristiti. Jednog će vam dana biti od velike pomoći.