Zavedený hinsightd HTTP server využívajúci Linux io_uring subsystém

Bol publikovaný kompaktný hinsightd HTTP server, ktorý je pozoruhodný tým, že používa asynchrónne I/O rozhranie io_uring poskytované v jadre Linuxu. Server podporuje protokol HTTP/1.1 a je navrhnutý pre nízku spotrebu zdrojov a zároveň poskytuje veľmi potrebné funkcie. Hinsightd napríklad podporuje TLS, reverzné proxy (rpoxy), ukladanie dynamicky generovaného obsahu do vyrovnávacej pamäte v lokálnom súborovom systéme, kompresiu dát za behu, reštart bez pripojenia, pripojenie dynamických obsluhovačov požiadaviek pomocou mechanizmov FastCGI a CGI. Kód projektu je napísaný v jazyku C a distribuovaný pod licenciou BSD.

Na spracovanie konfigurácie, písanie dodatkov a vytváranie obslužných programov je zabezpečená možnosť používať jazyk Lua, pričom takéto obslužné programy možno definovať priamo v konfiguračnom súbore servera. Vo forme zásuvných modulov sú implementované funkcie ako zmena formátu protokolovania, prepojenie jednotlivých protokolov s virtuálnymi hostiteľmi, definovanie stratégie vyvažovania záťaže, autentifikácia HTTP, prepisovanie URL a plánovaná plánovaná práca (napríklad aktualizácia certifikátov Let's Encrypt). formou pluginov.

Server je dodávaný s knižnicou na integráciu funkcie hinsightd do vašich aplikácií. Hinsightd tiež obsahuje integrovanú funkcionalitu na odosielanie požiadaviek HTTP z príkazového riadku, napríklad na načítanie stránky môžete spustiť „hinsightd -d URL“. Server je veľmi kompaktný a zaberá asi 200 kB skompilovaných (100 kb spustiteľný súbor a 100 kb zdieľaná knižnica). Externé závislosti zahŕňajú iba libc, lua, liburing a zlib a voliteľne openssl/libressl a ffcall.

Plány na ďalší vývoj zahŕňajú možnosť ukladať komprimované súbory do vyrovnávacej pamäte, izolovanie sandboxu na základe filtrovania systémových hovorov a využívania menných priestorov, riadenie šírky pásma (traffic shaping), multithreading, vylepšené spracovanie chýb a definíciu virtuálnych hostiteľov na základe masiek.

Výsledky testovania syntetického výkonu (bez optimalizácií v konfigurácii tak, ako je) obslužným programom ab pri spustení 250 a 500 (v zátvorkách) paralelných požiadaviek ("ab -k -c 250 -n 10000 http://localhost/"):

  • hinsightd/0.9.17 – 63035.01 žiadostí za sekundu (54984.63)
  • lighttpd/1.4.67 – 53693.29 žiadostí za sekundu (1613.59)
  • Apache/2.4.54 – 37474.10 žiadostí za sekundu (34305.55)
  • Caddy/2.6.2 – 35412.02 žiadostí za sekundu (33995.57)
  • nginx/1.23.2 – 26673.64 žiadostí za sekundu (26172.73)

Zdroj: opennet.ru

Pridať komentár