Gipaila ang hinsightd HTTP server gamit ang Linux io_uring subsystem

Usa ka compact HTTP server, hinsightd, ang gipatik, nga bantogan sa paggamit niini sa io_uring asynchronous I/O interface nga gihatag sa Linux kernel. Ang server nagsuporta sa HTTP/1.1 protocol ug gidisenyo alang sa ubos nga konsumo sa kapanguhaan samtang naghatag og in-demand nga gamit. Pananglitan, ang hinsightd nagsuporta sa TLS, reverse proxying (rproxy), pag-cache sa dinamikong namugna nga sulod sa lokal nga file system, on-the-fly compression sa gipasa nga data, pagsugod pag-usab nga walay pagbungkag sa natukod nga mga koneksyon, pagkonektar sa dinamikong mga tigdumala sa hangyo gamit ang FastCGI ug CGI nga mga mekanismo. Ang code sa proyekto gisulat sa C ug giapod-apod ubos sa lisensya sa BSD.

Aron maproseso ang configuration, isulat ang mga pagdugang ug paghimo og mga tigdumala sa hangyo, posible nga gamiton ang Lua nga pinulongan, ug ang maong mga tigdumala mahimong direkta nga ipasabut sa file sa configuration sa server. Sa dagway sa mga plugins, ang mga bahin sama sa pagbag-o sa format sa pagrekord sa log, pag-link sa mga indibidwal nga mga troso sa mga virtual nga host, pagtino sa usa ka estratehiya sa pagbalanse sa load, pag-authenticate sa HTTP, pagsulat pag-usab sa URL ug paghimo sa naka-iskedyul nga trabaho (pananglitan, pag-update sa mga sertipiko sa Let's Encrypt) gipatuman.

Ang server adunay usa ka librarya alang sa pag-integrate sa hinsightd functionality sa imong mga aplikasyon. Ang Hinsightd naglakip usab sa integrated functionality alang sa pagpadala sa HTTP requests gikan sa command line, pananglitan, mahimo nimong ipadagan ang command "hinsightd -d URL" aron makarga ang usa ka panid. Ang server kay compact kaayo ug mokuha ug mga 200KB sa compiled form (100KB executable file ug 100KB shared library). Ang mga eksternal nga dependency naglakip lang sa libc, lua, liburing ug zlib, ug opsyonal nga openssl/libressl ug ffcall.

Ang mga plano alang sa dugang nga kalamboan naglakip sa abilidad sa pag-cache sa mga compressed files, sandbox isolation base sa filtering system calls ug paggamit sa namespaces, traffic shaping, multi-threading, improved error handling ug mask-based virtual host detection.

Mga resulta sa synthetic performance testing (walay pag-optimize sa configuration as is) uban sa ab utility sa pagdagan sa 250 ug 500 (sa parentheses) parallel requests (β€œab -k -c 250 -n 10000 http://localhost/”):

  • hinsightd/0.9.17 – 63035.01 hangyo kada segundo (54984.63)
  • lighttpd/1.4.67 - 53693.29 hangyo kada segundo (1613.59)
  • Apache/2.4.54 - 37474.10 hangyo kada segundo (34305.55)
  • Caddy/2.6.2 – 35412.02 hangyo kada segundo (33995.57)
  • nginx/1.23.2 - 26673.64 hangyo kada segundo (26172.73)

Source: opennet.ru

Idugang sa usa ka comment