Tänään palvelimeni kaatui palvelimella Too many open files in system:, mutta minä joilla on jo korkeat arvot, mikä on tämän enimmäisarvo?

Minusta tuntuu siltä, että Googlessa ei ole hyviä tuloksia tälle, selittäen, mitä on otettava huomioon näiden arvojen asettamisessa, he vain sanovat asettavan sen tykkäämään 100 kt.

Minulla on 32 Gt: n RAM-palvelin, joka käyttää vain 10 Gt juuri nyt. Oletan, että tiedostorajojen nostaminen erittäin korkeiksi arvoiksi lisää RAM-muistin käyttöä, onko olemassa jonkinlainen kaava, jonka avulla voit laskea tämän? voi olla X tiedostomäärä auki?

Nykyiset asetukset:

cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024 

kommentit

  • Ei vastausta, mutta minusta tuntuu siltä, että avoimien tiedostojen enimmäismäärän rajoittaminen ei ole tapa säästää RAM-muistia, vaan levyn I / O-suorituskykyä. Suuren määrän avoimien tiedostojen salliminen tarkoittaa (mahdollisesti) suuren määrän samanaikaisesti Levyn käyttöoikeudet. Sinulla on todennäköisesti myös koko järjestelmän kattava raja sekä prosessikohtainen rajoitus. Enkä ole Linux-käyttäjä, en voi ' sanoa paljon enemmän että muu kuin että ulimit näyttää / asettaa prosessikohtaisen resurssirajan.
  • Onko tämä edes SSD-levyjen huolenaihe? Se ' on palvelin, enkä ' välitä, jos se kuolee, isäntäyritys vain korvaa sen ja minulla on varmuuskopioita. Luin myös, että verkkopistorasiat voivat myös aiheuttaa tämän ongelman, välitän enimmäkseen suorituskyvystä. ' maksan laitteistosta joko, jos käytän 100% tai 5%, niin kauan kuin se ' parantaa suorituskykyä, miksi välität? Pilvipalvelimessa voisin nähdä tämän ongelman, mutta omistettu laitteisto ei oikeastaan
  • Kyllä, avoimien pistorasioiden määrä lasketaan myös tähän rajaan (avoimet tiedostokuvaimet yleensä). Unohdin sen. Joten jos RAM on ainoa huolenaihe, en usko ' uskoakseni olevan huolissani rajan nostamisesta, ellei se tarkoita, että mikä tahansa tarjoamasi palvelu alkaa jakaa ylimääräinen muisti jokaiseen avoimeen liitäntään. Tätä vain sinä voisit tutkia.

Vastaa

Kuten Kusalananda sanoo, kasvaa file-max ei vaikuta suoraan muistin käyttöön, mutta se sallii prosessien avata enemmän tiedostokuvaajia, joilla on kopioiva vaikutus (sekä seuraamalla tiedostojen kuvauksia ytimessä että lisääntynyttä muistia) käyttö prosesseissa, jotka käyttävät näitä kuvauksia ja kuvaajia) – ytimen kommentit ehdottavat noin yhden kilotavun tiedostoa ytimen tiedoille ja vähentävät file-max (8192) oletusarvoa, jos se loppuu edustaa yli 10% muistista järjestelmän käynnistyessä ( ie RAM-muistia on vain 80 Mt). Ytimen asettama enimmäisarvo on suurin arvo, joka voidaan tallentaa arkkitehtuurisi C-tyypin muuttujaan long C.

Jos korotat file-max, lisää myös inode-max; ytimen dokumentaatiossa sanotaan, että tämän pitäisi olla ”3-4 kertaa suurempi kuin tiedosto-max-arvo, koska myös stdin-, stdout- ja verkkopistorasiaan tarvitaan inode-rakenne käsittele niitä. ”

Huomaa, että osuman file-max lyönti johtaa ytimen lokiviestiin, jossa sanotaan” VFS: file-max limit n saavutettu ”, Jonka arvo on n . Jos sinulla ei ole sitä lokissasi, et joko osu file-max -kohtaan tai suodatat lokiasi liikaa (se on tietotason lokiviesti).

(file-max ei rajoita prosesseja arvolla CAP_SYS_ADMIN, joten lyöminen ei lopeta kaikkea.)

Kommentit

  • Joten ei ole mitään haittapuolta mielivaltaisen korkeiden lukujen saamisessa? En näe ' mitään inode-max järjestelmässäni missään tapauksessa? Ubuntu 16.04 täällä. Haluan vain estää palvelimeni kaatumasta uudelleen, suoritan useita verkkopalveluja tällä palvelimella ja en välitä resurssien käytöstä div
  • Haittapuoli on, että pakenevat prosessit ei jää tiedostojen kuvausten yleisen rajoituksen ulkopuolelle, joten ne voivat aiheuttaa resurssien nälkää muilla tavoilla.
  • Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *