Predstavljen strežnik HTTP hinsightd, ki uporablja podsistem Linux io_uring

Objavljen je bil kompakten strežnik HTTP hinsightd, znan po uporabi asinhronega V/I vmesnika io_uring, ki je na voljo v jedru Linuxa. Strežnik podpira protokol HTTP/1.1 in je zasnovan za nizko porabo virov, hkrati pa zagotavlja prepotrebno funkcionalnost. Na primer, hinsightd podpira TLS, obratno proxy (rproxy), predpomnjenje dinamično ustvarjene vsebine v lokalnem datotečnem sistemu, stiskanje podatkov na letenju, ponovni zagon brez povezave, povezavo dinamičnih obdelovalcev zahtev z uporabo mehanizmov FastCGI in CGI. Projektna koda je napisana v jeziku C in se distribuira pod licenco BSD.

Za obdelavo konfiguracije, pisanje dodatkov in ustvarjanje obdelovalcev zahtev je zagotovljena možnost uporabe jezika Lua, medtem ko se lahko takšni obdelovalci definirajo neposredno v konfiguracijski datoteki strežnika. V obliki vtičnikov so funkcije, kot so spreminjanje oblike beleženja, povezovanje posameznih dnevnikov z virtualnimi gostitelji, definiranje strategije uravnoteženja obremenitve, preverjanje pristnosti HTTP, prepisovanje URL-jev in načrtovano načrtovano delo (na primer posodabljanje potrdil Let's Encrypt) implementirane v obliki vtičnikov.

Strežnik ima knjižnico za integracijo funkcionalnosti hinsightd v vaše aplikacije. Hinsightd vključuje tudi integrirano funkcionalnost za pošiljanje zahtev HTTP iz ukazne vrstice, na primer, da naložite stran, lahko zaženete "hinsightd -d URL". Strežnik je zelo kompakten in prevede približno 200 KB (100 KB izvršljive datoteke in 100 KB deljene knjižnice). Zunanje odvisnosti vključujejo samo libc, lua, liburing in zlib ter po izbiri openssl/libressl in ffcall.

Načrti za nadaljnji razvoj vključujejo možnost shranjevanja stisnjenih datotek v predpomnilnik, izolacijo peskovnika na podlagi filtriranja sistemskih klicev in uporabo imenskih prostorov, upravljanje pasovne širine (oblikovanje prometa), večnitnost, izboljšano obravnavo napak in definicijo virtualnih gostiteljev na podlagi mask.

Rezultati sintetičnega testiranja zmogljivosti (brez optimizacij v konfiguraciji, kakršna je) s pripomočkom ab pri izvajanju 250 in 500 (v oklepajih) vzporednih zahtev ("ab -k -c 250 -n 10000 http://localhost/"):

  • hinsightd/0.9.17 - 63035.01 zahtev na sekundo (54984.63)
  • lighttpd/1.4.67 - 53693.29 zahtev na sekundo (1613.59)
  • Apache/2.4.54 - 37474.10 zahtev na sekundo (34305.55)
  • Caddy/2.6.2 - 35412.02 zahtev na sekundo (33995.57)
  • nginx/1.23.2 - 26673.64 zahtev na sekundo (26172.73)

Vir: opennet.ru

Dodaj komentar