Curl 8.20.0 korjaa DNS-vian threadingissä: Syväsukellus resource poolingiin

Curl 8.20.0 korjaa DNS-vian threadingissä: Syväsukellus resource poolingiin

Tou 01, 2026 curl dns resolution threading performance optimization system architecture open source development

DNS-säikeistysongelma, josta kukaan ei puhu

Oletko koskaan miettinyt, mitä tapahtuu, kun curl käsittelee kymmeniä samanaikaisia DNS-kyselyitä? Vanha systeemi loi jokaiselle yhteydelle oman säikeen ja socketpairin tulosten synkronointiin. Pienellä määrällä yhteyksiä tämä meni läpi huomaamatta. Tuhansien rinnakkaisten yhteyksien kanssa homma räjähti käsiin: muistia, prosessoria ja tiedosto記述符eja kului turhaan.

Pahinta oli, että jumittunut DNS-kysely saattoi lukita koko prosessin. Helpon poistaminen säikeen ollessa kiinni johti deadlockiin.

Vanha kiertotie ja sen heikkoudet

curl-tiimi lisäsi CURLOPT_QUICK_EXIT-option, joka irrotti säikeet sen sijaan että odotti niiden valmistumista. Toimii, jos ohjelma lopetetaan heti. Pitkäkestoisissa sovelluksissa säikeet kertyivät taustalle ja söivät resursseja kunnes prosessi kaatui.

Kludgen perusmuoto.

Uusi thread pooling mullistaa pelin: curl 8.20.0

curl 8.20.0 tuo thread poolingin multi handle -tasolle. Yksi säikeiden pulssi korvaa vanhan kaaoksen.

Yksi pulssi, monta yhteyttä

  • Säikeet käynnistyvät tarpeen mukaan, ei turhaa varaus.
  • Tyhjät säikeet lopetetaan automaattisesti.
  • Kyselyt jonotetaan.
  • Tulokset jaetaan yhteisen ilmoitusmekanismin kautta oikealle easy handlle.

Vain yksi socketpair per multi handle – vaikka yhteyksiä olisi tuhansia. Tiedosto記述符-kulutus romahtaa.

Säätömahdollisuudet käteen

CURLMOPT_RESOLVE_THREADS_MAX rajoittaa säikeiden maksimimäärän. Oletus 20, säädettävissä kokemusten perusteella. Haluatko vain 5 säiettä prosessorin säästämiseksi? Tee se. Tarvitsetko 50 maksiminopeuteen? Mahdollista.

Uusi CURLMOPT_QUICK_EXIT multi-tasolla ohjaa pulssin sulkemista. Helpot voi poistaa vapaasti ilman jumitusvaaraa. Myöhästyneet DNS-tulokset hylätään siististi.

Tehokkuusparannus arjessa

Paitsi resurssisäästöt, myös suorituskyky nousee: kyselyt pyörivät valmiissa säikeissä. Ei käynnistyskuluja, vähemmän allokointeja ja systeemicallseja. Nopeus riippuu sovelluksesta, mutta kokonaisuus on parempi – vähemmän vaihtoja, tasaisempaa latenssia.

Uusi koodi, uudet bugit

Merkittävä muutos tarkoittaa enemmän koodia ja piilopaikkoja virheille. curl-tiimi uskoo stabiiliuteen, mutta testaa aina omassa ympäristössäsi.

Mitä tämä merkitsee sinulle

Korkean läpimonin sovelluksissa (web-kaavijat, datalinjat, lataussarjastimet) muistijalan pieneneminen ja tehokkuus nousevat selvästi.

Sulautetuissa ja IoT-jutuissa jokainen säästö lasketaan – tämä auttaa.

Pienimuotoisessa käytössä parannukset ovat hiljaisia, mutta DNS:t menevät nopeammin ja kevyemmin.

Laajempi näkymä

curlin DNS 2026 -hanke näyttää kypsää insinööritaitoa: ongelma tunnistettu, ratkaisu puhdas, taaksepäin yhteensopiva plus uudet optionit. Avoimen lähdekoodin huippua, kun suorituskykyyn panostetaan tosissaan.


Oletko testannut curl 8.20.0:aa? Siirtymässä tuotantoon? Jaa kokemuksesi kommenteissa – curl-tiimi kuuntelee aitoa palautetta.

Read in other languages:

RU BG EL CS UZ TR SV RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN