„Liiga paljude avatud failide” lahendamine

Vaata kategooriaid

„Liiga paljude avatud failide” lahendamine

2 min lugeda

Linuxi-põhistes süsteemides, näiteks RELIANOID seadmete puhul tarbib iga võrguühendus, sokkel või avatud fail failikirjeldajaOperatsioonisüsteem kehtestab ressursside ammendumise vältimiseks piirangud samaaegselt avatavate failideskriptorite arvule.

Kui protsess jõuab oma failideskriptori limiidini, ei saa see enam täiendavaid faile ega sokleid avada ja süsteem võib genereerida vea:

Liiga palju avatud faile

See olukord võib mõjutada süsteemi funktsionaalsust, põhjustades teenuste reageerimise lakkamise või uute ühenduste loomise ebaõnnestumise enne, kui mõjutatud protsess või süsteem taaskäivitatakse.

See artikkel selgitab, kuidas failikirjelduse piirangud toimivad RELIANOID süsteemid ja kuidas administraatorid saavad neid vajadusel kohandada.

Kuidas failikirjeldaja piirangud toimivad #

Linux haldab failideskriptoreid kahe peamise piirangutüübi kaudu:

  • Süsteemiülesed piirangud
  • Protsessipõhised piirangud

Stabiilse töö tagamiseks tuleb mõlemad vastavalt konfigureerida.

Süsteemiülesed failikirjeldajate piirangud #

Linuxi kernelil on globaalne piirang failideskriptorite arvule, mida saab kogu süsteemis eraldada. Seda väärtust kontrollib kerneli parameeter: fs.file-max

Praegust väärtust saate vaadata järgmiselt:

sysctl fs.file-max

Väljundi näide:

fs.file-max = 1000000

See tähendab, et süsteem saab kokku eraldada kuni miljon failideskriptorit. Kui see piirang on saavutatud, ei saa uusi failikäepidemeid luua enne, kui olemasolevad on vabastatud.

Vajadusel saavad administraatorid väärtust ajutiselt suurendada, kasutades järgmist:

sysctl -w fs.file-max=2000000

Muudatuse püsimiseks pärast taaskäivitamist lisage parameeter järgmisele: /etc/sysctl.conf

Näide:

fs.file-max = 2000000

Rakenda konfiguratsiooni järgmiselt:

sysctl -p

Protsessi failikirjeldajate piirangud #

Lisaks globaalsele süsteemipiirangule on igal protsessil ka oma piirang avatud failide arvule, mida see suudab käsitleda. Seda piirangut kontrollitakse abil ulimit.

Praegust limiiti saab kontrollida järgmiselt:

ulimit -n

Väljundi näide:

100000

See näitab, et üks protsess saab avada kuni 100 000 failikirjeldajat.

Kui protsess jõuab selle piirini, genereerib see "Liiga palju avatud faile" viga isegi siis, kui süsteemiülene limiit on endiselt saadaval.

Failikirjeldaja piirangud RELIANOID #

RELIANOID teenused laadivad oma protsessipõhised failikirjelduse piirangud järgmisest konfiguratsioonifailist:

/etc/profile/relianoid.sh

See tagab selle RELIANOID komponendid töötavad nõutavate piirangutega suure hulga võrguühenduste haldamiseks.

Kuid Samas süsteemis töötavad kolmanda osapoole protsessid ei pruugi neid piiranguid automaatselt päridaSeetõttu võivad jälgimisagendid, välised tööriistad või kohandatud teenused failideskriptorite ammendumisega kokku puutuda, kui nende piirangud on nõutavast madalamad.

Kolmandate osapoolte protsesside limiitide kohandamine #

Kui kolmanda osapoole rakendus nõuab suuremaid failikirjeldajate piiranguid, saab neid konfigureerida järgmiselt: /etc/security/limits.conf

Näiteks:

* pehme ots 200000 * kõva ots 200000

See konfiguratsioon suurendab kõigi kasutajate jaoks lubatud avatud failide arvu.

Teise võimalusena saab piiranguid rakendada konkreetsele kasutajale:

ncpa pehme fail 200000 ncpa kõva fail 200000

Pärast muudatuste rakendamist taaskäivitage mõjutatud teenus või protsess, et see laadiks uuendatud piirangud.

Järeldus #

. "Liiga palju avatud faile" Viga ilmneb siis, kui protsess saavutab oma lubatud failideskriptorite arvu ja ei saa avada täiendavaid faile või võrgupesasid. Kui see piirang ületatakse, ei pruugi teenused uusi ühendusi vastu võtta või normaalselt töötada.

Selle olukorra vältimiseks peaksid administraatorid tagama, et mõlemad süsteemiülene failikirjeldaja piirang (fs.file-max) Ja protsessi kohta piirang määratletud ulimit on õigesti konfigureeritud.

In RELIANOID süsteemides laaditakse teenusega seotud piirangud /etc/profile/relianoid.shSamas seadmes töötavad kolmandate osapoolte rakendused võivad aga vajada täiendavat konfigureerimist. /etc/security/limits.conf nii et nad pärivad sobivad failikirjeldajate piirangud.

Piisavate piirangute säilitamise ja süsteemi konfiguratsiooni vajaduse korral ülevaatamise abil saavad administraatorid aidata tagada stabiilse töö ja vältida teenuse katkestusi keskkondades, kus on palju samaaegseid ühendusi.

📄 Laadige see dokument alla PDF-vormingus #

    EMAIL: *

    Linuxi poolt BetterDocs