Objavljen je kompaktni HTTP server hinsightd, poznat po korištenju kernelom Linuxa pruženog sučelja za asinkrono ulaz/izlaz io_uring. Server podržava protokol HTTP/1.1 i dizajniran je za nisku potrošnju resursa uz istovremeno pružanje tražene funkcionalnosti. Na primjer, hinsightd podržava TLS, obrnuto proxy (rproxy), keširanje dinamički generiranog sadržaja u lokalnom FS-u, kompresiju podataka u hodu, ponovni pokret bez prekida uspostavljenih veza, povezivanje dinamičkih obrada zahtjeva putem mehanizama FastCGI i CGI. Kod projekta napisan je na jeziku C i distribuira se pod BSD licencom.
Za obradu konfiguracije, pisanje dodataka i izradu obrada zahtjeva pružena je mogućnost korištenja jezika Lua, pri čemu se takve obrade mogu definirati izravno u datoteci konfiguracije servera. U obliku pluginova implementirane su mogućnosti poput promjene formata zapisa u log, vezivanje pojedinačnih logova na virtualne hostove, određivanje strategije uravnoteženja opterećenja, HTTP autentifikacija, prepisivanje URL-ova i izvršavanje planiranih zadataka prema rasporedu (na primjer, ažuriranje Let's Encrypt certifikata).
Zajedno s serverom isporučuje se biblioteka za integraciju funkcija hinsightd u vlastite aplikacije. Hinsightd također uključuje integriranu funkcionalnost za slanje HTTP zahtjeva iz naredbenog retka; na primjer, za učitavanje stranice možete izvršiti naredbu „hinsightd -d URL“. Server je vrlo kompaktan i zauzima u skompajliranom obliku oko 200KB (100KB izvršna datoteka i 100KB dijeljena biblioteka). Među vanjskim ovisnostima su samo libc, lua, liburing i zlib, kao i opcionalno openssl/libressl i ffcall.
Iz planova za daljnji razvoj spominje se mogućnost pohrane u keš komprimiranih datoteka, sandbox izolacija temeljem filtriranja sistemskih poziva i korištenja prostora imena, upravljanje propusnošću (traffic shaping), višedretvenost, poboljšana obrada grešaka i određivanje virtualnih hostova na temelju maski.
Rezultati sintetičkog testiranja performansi (bez optimizacija u konfiguraciji onakvoj kakva jest) s alatom ab pri pokretanju 250 i 500 (u zagradi) 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
