A fost publicat serverul HTTP compact hinsightd, remarcabil prin utilizarea interfeței de intrare/ieșire asincronă io_uring, oferită în nucleul Linux. Serverul suportă protocolul HTTP/1.1 și este proiectat pentru un consum redus de resurse, oferind în același timp funcționalitățile solicitate. De exemplu, hinsightd suportă TLS, proxy invers (rproxy), cache pentru conținut generat dinamic în sistemul de fișiere local, comprimarea datelor livrate în timp real, repornirea fără a întrerupe conexiunile existente, precum și conectarea handler-elor de cereri dinamice prin mecanismele FastCGI și CGI. Codul proiectului este scris în C și este distribuit sub licența BSD.
Pentru gestionarea configurației, scrierea plugin-urilor și crearea handler-elor de cereri, este disponibilă utilizarea limbajului Lua, permițându-se astfel definirea acestor handler-e direct în fișier. al configurației serveruluiFuncționalități precum modificarea formatului înregistrărilor în log, asocierea unor loguri separate cu gazde virtuale, definirea strategiilor de balansare a încărcării, autentificare HTTP, rescrierea URL-urilor și execuția sarcinilor planificate (de exemplu, actualizarea certificatelor Let’s Encrypt) sunt implementate sub formă de pluginuri.
Împreună cu serverul vine o bibliotecă pentru integrarea funcțiilor hinsightd în aplicațiile proprii. Hinsightd include, de asemenea, funcționalitate integrată pentru trimiterea cererilor HTTP din linia de comandă, de exemplu, pentru a încărca o pagină se poate utiliza comanda „hinsightd -d URL”. Serverul este foarte compact, având o dimensiune de aproximativ 200KB (100KB fișier executabil și 100KB bibliotecă partajată). Dintre dependențele externe, sunt necesare doar libc, lua, liburing și zlib, precum și opțional openssl/libressl și ffcall.
În planurile de dezvoltare ulterioare se menționează posibilitatea de a stoca în cache fișierele comprimate, izolarea sandbox pe baza filtrării apelurilor de sistem și utilizarea spațiilor de nume, gestionarea lățimii de bandă (traffic shaping), multiprocesare, îmbunătățirea gestionării erorilor și definirea gazdelor virtuale pe baza unor măști.
Rezultatele testării sintetice a performanței (fără optimizări în configurația de bază) cu instrumentul ab, la rularea a 250 și 500 (în paranteză) de cereri paralele („ab -k -c 250 -n 10000 http://localhost/”):
- hinsightd/0.9.17 — 63035.01 cereri pe secundă (54984.63)
- lighttpd/1.4.67 — 53693.29 cereri pe secundă (1613.59)
- Apache/2.4.54 — 37474.10 cereri pe secundă (34305.55)
- Caddy/2.6.2 — 35412.02 cereri pe secundă (33995.57)
- nginx/1.23.2 — 26673.64 cereri pe secundă (26172.73)
Sursa: opennet.ro
