Astăzi serverul meu sa prăbușit cu Too many open files in system:
, dar eu au deja valori ridicate, care este valoarea maximă pentru aceasta?
Simt că nu există rezultate bune pe Google pentru asta, explicând ce trebuie luat în considerare pentru stabilirea valorilor respective, spun doar pentru a seta ca 100k.
Am un server RAM de 32 GB folosind doar 10 GB chiar acum, presupun că mărirea limitelor de fișier la valori foarte mari va crește utilizarea RAM, există un fel de formulă pe care o puteți folosi pentru a calcula acest lucru? Ca pentru 8 GB de RAM poate avea X număr de fișiere deschise?
Setări actuale:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Comentarii
Răspuns
După cum spune Kusalananda, creșterea file-max
nu va avea un impact direct asupra utilizării memoriei, dar va permite proceselor să deschidă mai mulți descriptori de fișiere care vor avea un efect knock-on (atât din urmărirea descrierilor fișierelor în nucleu, cât și din memoria crescută utilizare în procesele care utilizează acele descrieri și descriptori) – comentariile kernelului sugerează aproximativ un kilobyte pe fișier pentru datele kernelului și vor reduce valoarea implicită a file-max
(8192) dacă acest lucru se termină reprezentând mai mult de 10% din memorie atunci când sistemul pornește ( ie există doar 80 MiB de memorie RAM). Valoarea maximă impusă de nucleu este valoarea maximă care poate fi stocată într-o variabilă de tip long
în C pe arhitectura dvs.
Dacă măriți file-max
, ar trebui să măriți și inode-max
documentația kernel spune că aceasta ar trebui să fie „de 3-4 ori mai mare decât valoarea fișierului-max, deoarece stdin, stdout și socket-urile de rețea au nevoie și de o structură inode pentru gestionați-le. ”
Rețineți că apăsarea file-max
va avea ca rezultat un mesaj jurnal de kernel care spune„ VFS: limită maximă de fișier n atinsă ”, Cu valoarea adecvată pentru n . Dacă nu aveți acest lucru în jurnalele dvs., fie nu atingeți file-max
, fie filtrați jurnalele prea mult (este un mesaj jurnal la nivel de informații).
(file-max
nu limitează procesele cu CAP_SYS_ADMIN
, astfel încât lovirea acestuia nu va opri totul.)
Comentarii
- Deci, nu există nici un dezavantaj în a avea un număr arbitrar ridicat? Nu ' nu văd
inode-max
în sistemul meu, oricum? Ubuntu 16.04 aici. Vreau doar să împiedic din nou blocarea serverului meu, rulez mai multe servicii web pe acest server și nu îmi pasă de div id = „33163db238″>
grijă de utilizarea resurselor
ulimit
va afișa / seta o limită de resurse per proces.