Kako povećati ograničenje broja otvorenih datoteka u Linuxu


U Linuxu možete promijeniti maksimalnu količinu otvorenih datoteka. Ovaj broj možete izmijeniti korištenjem naredbe ulimit. Daje vam mogućnost kontrole resursa dostupnih za ljusku ili proces koji je ona pokrenula.

Pročitajte također: Postavite ograničenja pokretanja Linux procesa na nivou po korisniku

U ovom kratkom vodiču pokazat ćemo vam kako provjeriti vaše trenutno ograničenje otvorenih datoteka i opisa datoteka, ali da biste to učinili, morat ćete imati root pristup vašem sistemu.

Prvo, da vidimo kako možemo saznati maksimalan broj otvorenih deskriptora datoteka na vašem Linux sistemu.

Pronađite Linux Open File Limit

Vrijednost je pohranjena u:

cat /proc/sys/fs/file-max

818354

Broj koji ćete vidjeti, pokazuje broj datoteka koje korisnik može otvoriti po sesiji prijave. Rezultat može biti drugačiji ovisno o vašem sistemu.

Na primjer, na mom CentOS serveru, ograničenje je bilo postavljeno na 818354, dok je na Ubuntu serveru koji pokrećem kod kuće zadano ograničenje bilo postavljeno na 176772.

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

Provjerite Hard Limit u Linuxu

ulimit -Hn

4096

Provjerite Soft Limits u Linuxu

ulimit -Sn

1024

Da vidite hard i soft vrijednosti za različite korisnike, jednostavno možete prebaciti korisnika sa “su” na korisnika čija ograničenja želite provjeriti.

Na primjer:

su marin
ulimit -Sn

1024
ulimit -Hn

4096

Kako provjeriti ograničenja deskriptora datoteka širom sistema u Linuxu

Ako koristite server, neke od vaših aplikacija mogu zahtijevati veća ograničenja za deskriptore otvorenih datoteka. Dobar primjer za to su usluge MySQL/MariaDB ili Apache web server.

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

Sysctl se koristi za konfiguriranje parametara kernela u vrijeme izvođenja.

Na primjer, da povećate ograničenje otvorenih fajlova na 500000, možete koristiti sljedeću naredbu kao root:

sysctl -w fs.file-max=500000

Možete provjeriti trenutnu vrijednost za otvorene datoteke pomoću sljedeće naredbe:

cat /proc/sys/fs/file-max

Uz gornju naredbu promjene koje ste napravili ostat će aktivne samo do sljedećeg ponovnog pokretanja. Ako ih želite trajno primijeniti, morat ćete urediti sljedeći fajl:

vi /etc/sysctl.conf

Dodajte sljedeću liniju:

fs.file-max=500000

Naravno, možete promijeniti broj prema vašim potrebama. Za ponovnu provjeru promjena koristite:

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 koristiti sljedeću naredbu:

sysctl -p

Postavite ograničenja otvorenih datoteka na korisničkom nivou u Linuxu

Gornji primjeri su pokazali kako postaviti globalna ograničenja, ali možda ćete htjeti primijeniti ograničenja po korisniku. U tu svrhu, kao korisnik root, morat ćete urediti sljedeći fajl:

vi /etc/security/limits.conf

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

Linije koje biste trebali dodati imaju sljedeće parametre:

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

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

## 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 vam je pokazao osnovni primjer kako možete provjeriti i konfigurirati globalna ograničenja i ograničenja na korisničkom nivou za maksimalan broj otvorenih datoteka.

Iako smo samo zagrebali po površini, preporučujem vam da detaljnije pogledate i pročitate u vezi s /etc/sysctl.conf i /etc/security/limits.conf i naučite kako ih koristiti. One će vam jednog dana biti od velike pomoći.