Prezantoi serverin HTTP të fshehtë duke përdorur nënsistemin Linux io_uring

Është publikuar një server kompakt HTTP, i dukshëm për përdorimin e ndërfaqes asinkrone I/O io_uring të ofruar në kernelin Linux. Serveri mbështet protokollin HTTP/1.1 dhe është projektuar për konsum të ulët të burimeve duke ofruar funksionalitetin shumë të nevojshëm. Për shembull, hinsightd mbështet TLS, proksimin e kundërt (rproxy), ruajtjen e përmbajtjes së gjeneruar dinamikisht në sistemin lokal të skedarëve, kompresimin e të dhënave në lëvizje, rinisjen pa lidhje, lidhjen e mbajtësve dinamikë të kërkesave duke përdorur mekanizmat FastCGI dhe CGI. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet nën licencën BSD.

Për të përpunuar konfigurimin, për të shkruar shtesa dhe për të krijuar mbajtës të kërkesave, ofrohet mundësia e përdorimit të gjuhës Lua, ndërsa mbajtës të tillë mund të përcaktohen drejtpërdrejt në skedarin e konfigurimit të serverit. Në formën e shtojcave, veçori të tilla si ndryshimi i formatit të regjistrimit, lidhja e regjistrave individualë me hostet virtualë, përcaktimi i një strategjie të balancimit të ngarkesës, vërtetimi HTTP, rishkrimi i URL-së dhe puna e planifikuar (për shembull, përditësimi i certifikatave Let's Encrypt) zbatohen në formën e shtojcave.

Serveri vjen me një bibliotekë për integrimin e funksioneve të fshehta në aplikacionet tuaja. Hinsightd gjithashtu përfshin funksionalitet të integruar për dërgimin e kërkesave HTTP nga linja e komandës, për shembull, për të ngarkuar një faqe, mund të ekzekutoni "hinsightd -d URL". Serveri është shumë kompakt dhe merr rreth 200 KB të përpiluar (100 KB e ekzekutueshme dhe 100 KB bibliotekë e përbashkët). Varësitë e jashtme përfshijnë vetëm libc, lua, liburing dhe zlib, dhe opsionalisht openssl/libressl dhe ffcall.

Planet për zhvillim të mëtejshëm përfshijnë aftësinë për të ruajtur skedarët e kompresuar në cache, izolimin e sandbox bazuar në filtrimin e thirrjeve të sistemit dhe përdorimin e hapësirave të emrave, menaxhimin e gjerësisë së brezit (formësimi i trafikut), multithreading, trajtimi i përmirësuar i gabimeve dhe përcaktimi i hosteve virtualë bazuar në maska.

Rezultatet e testimit të performancës sintetike (pa optimizime në konfigurimin siç është) nga mjeti ab kur ekzekutohen 250 dhe 500 (në kllapa) kërkesa paralele ("ab -k -c 250 -n 10000 http://localhost/"):

  • hinsightd/0.9.17 - 63035.01 kërkesa për sekondë (54984.63)
  • lighttpd/1.4.67 - 53693.29 kërkesa për sekondë (1613.59)
  • Apache/2.4.54 - 37474.10 kërkesa për sekondë (34305.55)
  • Caddy/2.6.2 - 35412.02 kërkesa në sekondë (33995.57)
  • nginx/1.23.2 - 26673.64 kërkesa për sekondë (26172.73)

Burimi: opennet.ru

Shto një koment