Uveden hinsightd HTTP server koji koristi Linux io_uring podsistem

Objavljen je kompaktni hinsightd HTTP server, poznat po korišćenju io_uring asinhronog I/O interfejsa obezbeđenog u Linux kernelu. Server podržava HTTP/1.1 protokol i dizajniran je za nisku potrošnju resursa dok pruža prijeko potrebnu funkcionalnost. Na primjer, hinsightd podržava TLS, obrnuti proxying (rproxy), keširanje dinamički generiranog sadržaja u lokalnom sistemu datoteka, kompresiju podataka u hodu, ponovno pokretanje bez veze, povezivanje dinamičkih rukovatelja zahtjeva koristeći FastCGI i CGI mehanizme. Kod projekta je napisan u C jeziku i distribuira se pod BSD licencom.

Za obradu konfiguracije, pisanje dodataka i kreiranje rukovatelja zahtjeva, omogućena je mogućnost korištenja Lua jezika, dok se takvi rukovaoci mogu definirati direktno u konfiguracijskoj datoteci servera. U obliku dodataka, funkcije kao što su promjena formata evidentiranja, povezivanje pojedinačnih dnevnika sa virtuelnim hostovima, definiranje strategije balansiranja opterećenja, HTTP autentifikacija, ponovno pisanje URL-a i planirani rad (na primjer, ažuriranje Let's Encrypt certifikata) implementirani su u oblik dodataka.

Server dolazi sa bibliotekom za integraciju hinsightd funkcionalnosti u vaše aplikacije. Hinsightd također uključuje integriranu funkcionalnost za slanje HTTP zahtjeva iz komandne linije, na primjer, da biste učitali stranicu, možete pokrenuti "hinsightd -d URL". Server je veoma kompaktan i zauzima oko 200 KB kompajlirano (100 KB izvršne i 100 KB dijeljene biblioteke). Eksterne zavisnosti uključuju samo libc, lua, liburing i zlib, i opciono openssl/libressl i ffcall.

Planovi za dalji razvoj uključuju mogućnost skladištenja komprimovanih fajlova u keš memoriju, izolaciju sandbox-a zasnovanu na filtriranju sistemskih poziva i korišćenju imenskih prostora, upravljanje propusnim opsegom (oblikovanje saobraćaja), multithreading, poboljšano rukovanje greškama i definisanje virtuelnih hostova na osnovu maski.

Rezultati sintetičkog testiranja performansi (bez optimizacija u konfiguraciji kakva jeste) od strane uslužnog programa ab kada se izvršavaju 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