Ettepanek TCP_NODELAY reĆŸiimi vaikeseadeks aktiveerimiseks.

Marc Brooker, insener Amazon Web Services (AWS) ettevĂ”ttest, kĂ€sitles eksiarvamusi, mis on seotud vĂ€ikeste sĂ”numite edastamise efektiivsuse suurendamisega, kasutades TCP/IP stack'is vaikimisi rakendatavat Nagle'i algoritmi. Soovitused hĂ”lmavad Nagle'i algoritmi vaikimisi vĂ€ljalĂŒlitamist, mida saab eraldi rakendustes teha, seadistades TCP_NODELAY suvandi vĂ”rgu soketites, kasutades setsockopt kutset, nagu on juba pikka aega tehtud sellistes projektides nagu Node.js ja curl.

Nagle'i algoritm vĂ”imaldab vĂ€ikeste sĂ”numite kogumist liikluse vĂ€hendamiseks – see peatab uute TCP segmentide saatmise, kuni saadakse kinnitus varem edastatud andmete vastuvĂ”tu kohta. NĂ€iteks, ilma kogumise rakendamiseta 1 baidi saatmisel saadetakse tĂ€iendavalt 40 baiti TCP ja IP paketi pealkirju. Kaasaegsetes tingimustes Nagle'i algoritmi kasutamine viib mĂ€rgatava viivituse suurenemiseni, mis on vastuvĂ”etamatu interaktiivsete ja jaotatud rakenduste jaoks.

Tuginedes on kolm peamist pÔhjust, miks vaikimisi kasutada TCP_NODELAY suvandit, mis keelab Nagle'i algoritmi:

  • Nagle'i algoritmi ĂŒhilduvus 'delayed ACK' optimeerimisega, mille raames saadetakse ACK-vastus mitte kohe, vaid pĂ€rast vastusandmete saamist. Probleemiks on see, et Nagle'i algoritmis on ACK-paketi vastuvĂ”tt signaaliks kogutud andmete saatmiseks, kuid kui ACK-paketti ei tule, toimub saatmine ajapiirangute tĂ€itumisel. Nii tekib suletud ring ja ACK-pakett signaalina ei toimi, kuna teine pool ei saa andmeid, kuna need kogunevad saatja poole, ja saatja ei saada neid enne ajapiirangu tĂ€itumist, kuna ei saa ACK-paketti.
  • Nagle'i algoritmi RFC vĂ”eti vastu 1984. aastal ja see ei ole mĂ”eldud kaasaegsete kĂ”rgkiiruslike vĂ”rkude parameetrite jaoks ja serverid dale senterites, mis pĂ”hjustab reageerimisprobleeme. Aeg, mis kulub pĂ€ringu saatmise ja vastuse saamise vahel (RTT), on kaasaegsetes vĂ”rkudes 0,5 ms + mĂ”ned millisekundid andmevahetuse puhul andme keskustes ĂŒhes piirkonnas + kuni sada millisekundit, kui saadetakse ĂŒle kogu maailma. Nende millisekunditega on kaasaegne server vĂ”imeline tegema tohutu hulga tööd.
  • Kaasaegsed jaotatud rakendused ei edasta enam ĂŒksikuid andmebaite, vaid vĂ€ikeste andmete kogumine toimub tavaliselt rakenduse tasemel. Isegi kui kasulikud andmed on vaid mĂ”ned baitid, suureneb tĂ”enĂ€oliselt edastatava teabe suurus olulisel mÀÀral pĂ€rast serialiseerimise rakendamist, JSON API-ĂŒmberringluse kasutamist ja TLS-krĂŒptimise kaudu edastamist. 40 baidise kokkuhoiu kĂŒsimus ei ole enam nii aktuaalne.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster