Ipinakilala ang hinsightd HTTP server gamit ang Linux io_uring subsystem

Inilabas na ang compact HTTP server hinsightd. Ito ay kapansin-pansin sa paggamit nito ng io_uring asynchronous I/O interface na ibinigay ng Linux kernel. Sinusuportahan ng server ang HTTP/1.1 protocol at idinisenyo para sa mababang pagkonsumo ng mapagkukunan habang nagbibigay ng sikat na functionality. Halimbawa, sinusuportahan ng hinsightd ang TLS, reverse proxying (rproxy), pag-cache ng dynamic na nabuong content sa lokal na file system, on-the-fly compression ng ibinalik na data, i-restart nang hindi sinisira ang mga naitatag na koneksyon, at mga dynamic na tagapangasiwa ng kahilingan gamit ang FastCGI at CGI. Ang code ng proyekto ay nakasulat sa C at ipinamahagi sa ilalim ng lisensya ng BSD.

Ang kakayahang gamitin ang wikang Lua ay ibinibigay para sa pagproseso ng configuration, pagsulat ng mga add-on at paglikha ng mga request handler, habang ang mga naturang handler ay maaaring direktang tukuyin sa file. mga konpigurasyon ng serverAng mga plugin ay nagbibigay ng mga tampok tulad ng pagbabago ng format ng log, pag-uugnay ng mga indibidwal na log sa mga virtual host, pagtukoy ng isang diskarte sa pagbabalanse ng load, pagpapatotoo ng HTTP, muling pagsusulat ng URL, at pagpapatupad ng mga naka-iskedyul na gawain (tulad ng pag-update ng mga sertipiko ng Let's Encrypt).

May server May ibinigay na library para sa pagsasama ng hinsightd functionality sa iyong mga application. Kasama rin sa Hinsightd ang integrated functionality para sa pagpapadala ng mga HTTP request mula sa command line; halimbawa, para mag-load ng page, maaari mong patakbuhin ang "hinsightd -d URL." Napakaliit ng server, na kumukuha ng humigit-kumulang 200 KB ng compiled space (100 KB executable at 100 KB shared library). Kasama lamang sa mga external dependencies ang libc, lua, liburing, at zlib, pati na rin ang opsyonal na openssl/libressl at ffcall.

Kasama sa mga plano sa pagpapaunlad sa hinaharap ang kakayahang mag-cache ng mga naka-compress na file, sandbox isolation batay sa system call filtering at namespaces, traffic shaping, multithreading, pinahusay na paghawak ng error, at mask-based virtual host definition.

Mga resulta ng synthetic performance testing (nang walang mga optimization sa as-is configuration) gamit ang ab utility kapag nagpapatakbo ng 250 at 500 (sa mga bracket) parallel requests (“ab -k -c 250 -n 10000 http://localhost/”):

  • hinsightd/0.9.17 — 63035.01 na mga query bawat segundo (54984.63)
  • lighttpd/1.4.67 — 53693.29 na kahilingan bawat segundo (1613.59)
  • Apache/2.4.54 — 37474.10 na kahilingan bawat segundo (34305.55)
  • Caddy/2.6.2 — 35412.02 na kahilingan kada segundo (33995.57)
  • nginx/1.23.2 — 26673.64 na kahilingan bawat segundo (26172.73)

Pinagmulan: opennet.ru