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

  • Nu este un răspuns, dar mă frapează că limitarea numărului maxim de fișiere deschise nu este o modalitate de a salva memoria RAM, ci performanța I / O pe disc. Permiterea unui număr mare de fișiere deschise implică permisiunea unui număr (potențial) mare de accesări pe disc. De asemenea, probabil că aveți o limită generală la nivel de sistem, precum și o limită pe proces. Nu sunt un utilizator Linux, nu pot ' să spun multe despre că, altul decât acela ulimit va afișa / seta o limită de resurse per proces.
  • Oricum, aceasta este chiar o preocupare pentru discurile SSD? ' este un server și ' nu-mi pasă dacă moare, compania de găzduire doar o va înlocui și am copii de rezervă. De asemenea, am citit că și socket-urile de rețea pot cauza această problemă. Îmi pasă mai ales de performanță. Eu ' plătesc pentru hardware fie dacă folosesc 100% sau 5%, deci atâta timp cât ' îmbunătățește performanța, de ce îmi pasă? Pentru un server cloud am putut vedea această problemă, dar hardware-ul dedicat nu este cu adevărat
  • Da, numărul de socket-uri deschise va conta și pentru această limită (deschideți descriptorii de fișiere în general). Am uitat de asta. Deci, dacă RAM este singura dvs. preocupare, nu ' nu cred că aș fi îngrijorat de creșterea limitei, cu excepția cazului în care asta înseamnă că orice serviciu pe care îl furnizați începe să alocați extra memorie legată de fiecare soclu deschis. Acesta ar fi ceva pe care numai dvs. l-ați putea investiga.

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

  • Dezavantajul este că procesele fugare nu va fi prins de limita generală a descrierilor de fișiere, astfel încât acestea ar putea provoca foamete de resurse în alte moduri.
  • Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *