Zaveden hinsightd HTTP server využívající linuxový io_uring subsystém

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

Přidat komentář