VPN-rele lakkaa hyväksymästä SSH-yhteyksiä: tiedostokuvaajien rajat
Tunnelin liikenne jatkuu, vaikka sen takana oleva socat-rele kieltäytyy uusista istunnoista. Seuraa polku ja lue sitten peritty raja elävästä PID:stä.
WireGuard-kättely suoritetaan edelleen, peer näyttää edelleen tuoreen päätepisteen, ja silti uusi SSH-istunto sen takana olevan releen kautta jää roikkumaan ilman banneria. Tämä yhdistelmä osoittaa pois tunnelista kohti prosessia, joka ottaa socketin vastaan. socatin kaltainen rele istuu sovelluksen polulla omalla kuvaajabudjetillaan, omilla lapsillaan ja omilla perityillä rajoillaan. Alla oleva kävely alkaa asiakkaasta ja pysähtyy ensimmäiseen komponenttiin, joka ei voi avata uutta socketia.
Seuraa polkua ennen kuin muutat numeroa
Seuraa yhtä epäonnistunutta pyyntöä sen sijaan, että miettisit tunnelia kokonaisuutena. Asiakas kirjoittaa tunneliin, VPN-daemon purkaa salauksen ja reitittää, ja rele ottaa vastaan toisella puolella. Jokainen vaihe kuluttaa kuvaajia, ja se, joka tavallisesti loppuu, on viimeinen.
Aloita pyynnöstä, jonka voit toistaa, ja mittaa sen aika. Jos TCP-kättely suoritetaan mutta sovelluksen banneria ei tule, rele otti socketin ja jäi sitten jumiin lapseen tai ylävirran jalkaansa. Jos itse kättely ei koskaan suoritu, syy on reititys, palomuuri tai kuuntelijan tila, ei kuvaajien katto. Kirjaa, kumman kahdesta muodosta näit, koska ne osoittavat eri prosesseihin.
Laske myös hypyt, jotka monistavat työtä. Haarautuva kuuntelija antaa jokaisen hyväksytyn socketin lapselle, joka pitää omaa kopiotaan, joten todellinen summa on koko puun ominaisuus, ei vain vanhemman.
Lue raja, jonka rele peri
Ainoa merkitsevä raja kuuluu käynnissä olevalle prosessille, ja sen asetti se, mikä käynnisti prosessin. ulimit -n-komennon kirjoittaminen kuoressa kuvaa kuorta. Kysy palvelupäälliköltä, mitä se sovelsi, ja vahvista sitten PID:stä.
systemctl show -p MainPID -p LimitNOFILE vpn-relay.service
cat /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
Tiedosto limits tulostaa pehmeän ja kovan katon sellaisina kuin prosessi ne näkee. Matala pehmeä arvo runsaan kovan arvon alla tarkoittaa, että daemon saa nostaa omaa kattoaan, ja jotkut tekevät niin käynnistyksessä; yhtä suuret matalat arvot tarkoittavat, että unit-tiedosto on lähde.
Drop-in-tiedostot ladataan leksikaalisessa järjestyksessä ja myöhemmät voittavat, joten systemctl cat vpn-relay.service on valtuutettu näkymä siihen, mikä pätee. Sellaisen tiedoston muokkaaminen, jota päällikkö ei koskaan lue, on yleisin syy siihen, ettei nostettu numero vaikuta.
Erota vakaa samanaikaisuus säilytetystä tilasta
Kaksi prosessia voi osua samaan kattoon toisistaan riippumattomista syistä, ja keinot eroavat. Kysyntä, joka seuraa hyödyllisiä samanaikaisia istuntoja, on kapasiteettikysymys. Kasvu, joka jatkuu työn päätyttyä, on vuoto tai joukko istuntoja, joita kukaan ei sulkenut.
Mittaa joutilaana, normaalilla huipullasi ja vielä muutama minuutti kuorman pysähtymisen jälkeen. Avoimien merkintöjen laskeminen komennolla ls /proc/PID/fd | wc -l pehmeää rajaa vastaan kertoo eron, ja yksi tai kaksi katon alle jäävä luku on kova pysähdys, ei hidas polku.
Kun luku ei suostu laskemaan, katso socket-tiloja kokonaissummien sijaan. Tilassa CLOSE_WAIT istuvat kuvaajat tarkoittavat, että peer sulki eikä sinun puolesi koskaan, mikä on sovelluksen elinkaarivika, jota suurempi raja vain lykkää. Rajaa myös lapsimalli: haarautuva rele ilman samanaikaisten lasten ylärajaa kuluttaa kuvaajat, prosessipaikat ja muistin yhdessä.
Tarkista uusi arvo elävässä prosessissa
Kun olet muokannut unit-tiedostoa, lataa päällikkö uudelleen ja käynnistä palvelu uudelleen, sillä pelkkä uudelleenlataus ei koskaan korvaa rajoja, jotka käynnissä oleva prosessi on jo perinyt. Vahvista prosessista, joka todella palvelee liikennettä.
systemctl daemon-reload
systemctl restart vpn-relay.service
awk '/Max open files/ {print}' /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
ss -tnp state established '( sport = :2222 )' | wc -l
Rivi awk palauttaa uuden parin; jos se näyttää yhä vanhan, muokkaamasi drop-in ei ole se, joka ladataan. ss-luku on kuormitustarkistuksesi, joten avaa odottamasi määrä istuntoja ja katso sen nousevan. Luku, joka jatkaa nousuaan näiden istuntojen sulkemisen jälkeen, tarkoittaa, ettei raja ollut koskaan koko ongelma.
Jokaiseen suureen korotukseen kuuluu yksi varoitus. Sovellukset, jotka kyselevät select()-kutsulla, eivät voi tarkkailla kuvaajia yli FD_SETSIZE:n, joka on tyypillisissä koosteissa 1024, joten sen yli nostettu katto voi tuottaa virheitä, jotka näyttävät liittymättömiltä. systemd:n suoritusviite kantaa saman varoituksen käynnistämilleen palveluille.
Pidä uudelleenkäynnistys kaukana tunnelin saatavuudesta
Releen uudelleenkäynnistys pudottaa sen aktiiviset istunnot, ja se on erillinen tapahtuma VPN:n kaatumisesta. Järjestä muutos niin, että tunneli pysyy pystyssä releen kierron ajan, ja varoita jokaista, jonka pitkäikäinen istunto sen ylittää.
Palautus on edellinen unit-tiedosto plus toinen uudelleenkäynnistys, ja se tiedosto pysyy paikallaan, kunnes uusi arvo on kestänyt työpäivän. Sulje sitten silmukka pyynnöllä, joka alun perin epäonnistui: yksi uusi SSH-istunto releen kautta, yksi siirto tarpeeksi pitkä, jotta sillä on merkitystä, ja kuvaajaluku, joka palaa joutilastasolleen.