Predstavljen hinsightd HTTP poslužitelj koji koristi Linux io_uring podsustav

Objavljen je kompaktni HTTP poslužitelj, hinsightd, poznat po korištenju io_uring asinkronog I/O sučelja dostupnog u Linux kernelu. Poslužitelj podržava HTTP/1.1 protokol i dizajniran je za nisku potrošnju resursa uz pružanje funkcionalnosti na zahtjev. Na primjer, hinsightd podržava TLS, obrnuti proxy (rproxy), predmemoriranje dinamički generiranog sadržaja u lokalnom datotečnom sustavu, on-the-fly kompresiju prenesenih podataka, ponovno pokretanje bez prekidanja uspostavljenih veza, povezivanje dinamičkih rukovatelja zahtjevima pomoću FastCGI i CGI mehanizama. Projektni kod je napisan u C-u i distribuira se pod BSD licencom.

Za obradu konfiguracije, pisanje dodataka i kreiranje rukovatelja zahtjevima moguće je koristiti jezik Lua, a takve rukovatelje moguće je definirati izravno u konfiguracijskoj datoteci poslužitelja. U obliku dodataka implementirane su značajke kao što su promjena formata snimanja dnevnika, povezivanje pojedinačnih dnevnika s virtualnim hostovima, definiranje strategije uravnoteženja opterećenja, HTTP autentifikacija, prepisivanje URL-a i izvođenje planiranog rada (na primjer, ažuriranje Let's Encrypt certifikata).

Poslužitelj dolazi s bibliotekom za integraciju hinsightd funkcionalnosti u vaše aplikacije. Hinsightd također uključuje integriranu funkcionalnost za slanje HTTP zahtjeva iz naredbenog retka, na primjer, možete pokrenuti naredbu "hinsightd -d URL" za učitavanje stranice. Poslužitelj je vrlo kompaktan i zauzima oko 200 KB u prevedenom obliku (100 KB izvršna datoteka i 100 KB dijeljena biblioteka). Vanjske ovisnosti uključuju samo libc, lua, liburing i zlib, te po izboru openssl/libressl i ffcall.

Planovi za daljnji razvoj uključuju mogućnost predmemoriranja komprimiranih datoteka, izolaciju sandboxa temeljenu na filtriranju poziva sustava i korištenju imenskih prostora, oblikovanje prometa, višenitnost, poboljšano rukovanje pogreškama i detekciju virtualnog hosta temeljenu na maski.

Rezultati sintetičkog testiranja performansi (bez optimizacija u konfiguraciji kakva jest) s uslužnim programom ab pri pokretanju 250 i 500 (u zagradama) paralelnih zahtjeva (“ab -k -c 250 -n 10000 http://localhost/”):

  • hinsightd/0.9.17 – 63035.01 zahtjeva u sekundi (54984.63)
  • lighttpd/1.4.67 - 53693.29 zahtjeva u sekundi (1613.59)
  • Apache/2.4.54 - 37474.10 zahtjeva u sekundi (34305.55)
  • Caddy/2.6.2 – 35412.02 zahtjeva u sekundi (33995.57)
  • nginx/1.23.2 - 26673.64 zahtjeva u sekundi (26172.73)

Izvor: opennet.ru

Dodajte komentar