Cum rezolvi eroarea “Too many open files” in Linux

Configurare noua (How To)

Situatie

Eroarea “Too many open files” în Linux apare atunci când un proces depășește limita maximă a numărului de fișiere deschise în același timp, așa cum este definită de sistem. Aceasta este o problemă comună în aplicațiile care manipulează un număr mare de fișiere simultan, cum ar fi serverele web, bazele de date sau alte aplicații intensive în I/O.
Iată câțiva pași pentru a rezolva această problemă:

1. Verificarea limitei curente a fișierelor deschise

Pentru a verifica limita curentă a fișierelor deschise pentru utilizatorul curent, poți folosi comanda:

ulimit -n

Această comandă va returna numărul maxim de fișiere pe care utilizatorul le poate deschide simultan.

2. Creșterea limitei pentru utilizatorul curent

Dacă dorești să crești limita pentru ședința curentă, poți utiliza:

ulimit -n [noua_limită]

De exemplu, pentru a crește limita la 4096 fișiere:

ulimit -n 4096

3. Modificarea configurației pentru limite persistente

Dacă dorești ca modificările să fie persistente și să se aplice la fiecare sesiune de utilizator, trebuie să modifici fișierele de configurare:

a. Editarea fișierului /etc/security/limits.conf

Adaugă următoarele linii în fișierul `/etc/security/limits.conf`:

*               soft    nofile          4096
*               hard    nofile          4096

Aceste linii vor aplica limitele pentru toți utilizatorii (`*`). Poți specifica un utilizator anume în loc de `*`.

b. Editarea fișierului /etc/pam.d/common-session (Ubuntu/Debian)

Adaugă următoarea linie:

session required pam_limits.so

Aceasta asigură că limitele din `limits.conf` sunt aplicate în timpul sesiunii utilizatorului.

4. Modificarea fișierului /etc/sysctl.conf

Pentru a modifica limita la nivel de sistem, deschide fișierul `/etc/sysctl.conf` și adaugă sau modifică următoarea linie:

fs.file-max = 100000

Aceasta setează numărul maxim total de fișiere pe care kernelul le poate gestiona. După modificare, aplică setările cu:

sudo sysctl -p

5. Verificarea aplicației

Asigură-te că aplicația ta sau scriptul pe care îl folosești nu deschide fișiere fără a le închide corespunzător. Verifică și optimizează codul pentru a te asigura că resursele sunt gestionate eficient.

6. Verificarea deschiderii fișierelor

Pentru a verifica ce fișiere sunt deschise de un proces specific sau de sistem, folosește comanda:

lsof | wc -l

Aceasta va returna numărul total de fișiere deschise, iar pentru un anumit proces poți folosi:

lsof -p [PID]

7. Monitorizarea constantă

Utilizează instrumente precum `htop`, `glances` sau altele pentru a monitoriza utilizarea fișierelor deschise și a resurselor sistemului în timp real.

Solutie

Tip solutie

Permanent

Voteaza

(0 din 3 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?