Byl publikován kompaktní HTTP server, hinsightd, pozoruhodný tím, že používá asynchronní I/O rozhraní io_uring poskytované v jádře Linuxu. Server podporuje protokol HTTP/1.1 a je navržen s ohledem na nízkou spotřebu zdrojů a zároveň poskytuje funkce na vyžádání. Hinsightd například podporuje TLS, reverzní proxy (rproxy), cachování dynamicky generovaného obsahu v lokálním souborovém systému, průběžnou kompresi přenášených dat, restartování bez přerušení navázaných spojení, připojení dynamických obslužných rutin pomocí FastCGI a CGI mechanismů. Kód projektu je napsán v jazyce C a distribuován pod licencí BSD.
Pro zpracování konfigurace, zápis dodatků a vytvoření obslužných rutin požadavků je možné použít jazyk Lua a takové obslužné rutiny lze definovat přímo v konfiguračním souboru serveru. Ve formě pluginů jsou implementovány takové funkce, jako je změna formátu záznamu logu, propojení jednotlivých logů s virtuálními hostiteli, definování strategie vyrovnávání zátěže, HTTP autentizace, přepisování URL a provádění naplánované práce (například aktualizace certifikátů Let's Encrypt).
Server je dodáván s knihovnou pro integraci funkcí hinsightd do vašich aplikací. Hinsightd také obsahuje integrovanou funkcionalitu pro odesílání požadavků HTTP z příkazového řádku, například můžete spustit příkaz "hinsightd -d URL" pro načtení stránky. Server je velmi kompaktní a ve zkompilované podobě zabírá asi 200 KB (100 KB spustitelný soubor a 100 KB sdílená knihovna). Externí závislosti zahrnují pouze libc, lua, liburing a zlib a volitelně openssl/libressl a ffcall.
Plány na další vývoj zahrnují schopnost ukládat komprimované soubory do mezipaměti, izolaci sandboxu založenou na filtrování systémových volání a používání jmenných prostorů, tvarování provozu, vícevláknové zpracování, vylepšené zpracování chyb a detekci virtuálních hostitelů na základě masky.
Výsledky syntetického testování výkonu (bez optimalizací v konfiguraci tak, jak je) s obslužným programem ab při spuštění 250 a 500 (v závorkách) paralelních požadavků („ab -k -c 250 -n 10000 http://localhost/“):
- hinsightd/0.9.17 – 63035.01 požadavků za sekundu (54984.63)
- lighttpd/1.4.67 – 53693.29 požadavků za sekundu (1613.59)
- Apache/2.4.54 – 37474.10 požadavků za sekundu (34305.55)
- Caddy/2.6.2 – 35412.02 požadavků za sekundu (33995.57)
- nginx/1.23.2 – 26673.64 požadavků za sekundu (26172.73)
Zdroj: opennet.ru