Ipinakilala ang hinsightd HTTP server gamit ang Linux io_uring subsystem

Na-publish ang isang compact hinsightd HTTP server, na kapansin-pansin sa paggamit ng io_uring asynchronous I/O interface na ibinigay sa Linux kernel. Sinusuportahan ng server ang HTTP/1.1 protocol at idinisenyo para sa mababang pagkonsumo ng mapagkukunan habang nagbibigay ng kinakailangang pag-andar. Halimbawa, sinusuportahan ng hinsightd ang TLS, reverse proxying (rproxy), pag-cache ng dynamic na nabuong content sa lokal na file system, on-the-fly data compression, connectionless restart, koneksyon ng mga dynamic na humahawak ng kahilingan gamit ang FastCGI at CGI na mga mekanismo. Ang code ng proyekto ay nakasulat sa wikang C at ipinamahagi sa ilalim ng lisensya ng BSD.

Upang maproseso ang pagsasaayos, magsulat ng mga karagdagan at lumikha ng mga tagapangasiwa ng kahilingan, ang kakayahang gamitin ang wikang Lua ay ibinibigay, habang ang mga naturang tagapangasiwa ay maaaring direktang tukuyin sa file ng pagsasaayos ng server. Sa anyo ng mga plugin, ang mga tampok tulad ng pagbabago sa format ng pag-log, pag-link ng mga indibidwal na log sa mga virtual na host, pagtukoy ng diskarte sa pagbalanse ng pag-load, pagpapatunay ng HTTP, muling pagsusulat ng URL, at naka-iskedyul na naka-iskedyul na trabaho (halimbawa, pag-update ng mga certificate ng Let's Encrypt) ay ipinatupad sa anyo ng mga plugin.

Ang server ay may kasamang library para sa pagsasama ng hinsightd functionality sa iyong mga application. Kasama rin sa Hinsightd ang pinagsamang pagpapagana para sa pagpapadala ng mga kahilingan sa HTTP mula sa command line, halimbawa, upang mag-load ng page, maaari mong patakbuhin ang "hinsightd -d URL." Ang server ay napaka-compact at tumatagal ng humigit-kumulang 200KB na pinagsama-sama (100KB executable at 100KB shared library). Kasama lang sa mga panlabas na dependency ang libc, lua, liburing at zlib, at opsyonal na openssl/libressl at ffcall.

Kasama sa mga plano para sa karagdagang pag-unlad ang kakayahang mag-imbak ng mga naka-compress na file sa cache, sandbox isolation batay sa system call filtering at paggamit ng mga namespace, pamamahala ng bandwidth (traffic shaping), multithreading, pinahusay na paghawak ng error at kahulugan ng mga virtual host batay sa mga maskara.

Ang mga resulta ng synthetic performance testing (nang walang mga optimization sa configuration as is) ng 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 kahilingan bawat segundo (54984.63)
  • lighttpd/1.4.67 - 53693.29 mga kahilingan sa 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 kada segundo (26172.73)

Pinagmulan: opennet.ru

Magdagdag ng komento