Introduceret hinsightd HTTP-server ved hjælp af Linux io_uring-undersystem

En kompakt HTTP-server, hinsightd, er blevet udgivet, kendt for dens brug af den io_uring asynkrone I/O-grænseflade, der findes i Linux-kernen. Serveren understøtter HTTP/1.1-protokollen og er designet til lavt ressourceforbrug, samtidig med at den leverer efterspurgt funktionalitet. For eksempel understøtter hinsightd TLS, reverse proxying (rproxy), caching af dynamisk genereret indhold i det lokale filsystem, on-the-fly komprimering af transmitterede data, genstart uden at afbryde etablerede forbindelser, tilslutning af dynamiske anmodningsbehandlere ved hjælp af FastCGI- og CGI-mekanismer. Projektkoden er skrevet i C og distribueret under BSD-licensen.

For at behandle konfigurationen, skrive tilføjelser og oprette anmodningshandlere er det muligt at bruge Lua-sproget, og sådanne handlere kan defineres direkte i serverkonfigurationsfilen. I form af plugins implementeres sådanne funktioner som ændring af logregistreringsformatet, linkning af individuelle logfiler til virtuelle værter, definering af en belastningsbalanceringsstrategi, HTTP-godkendelse, URL-omskrivning og udførelse af planlagt arbejde (for eksempel opdatering af Let's Encrypt-certifikater).

Serveren leveres med et bibliotek til at integrere hinsightd-funktionalitet i dine applikationer. Hinsightd inkluderer også integreret funktionalitet til at sende HTTP-anmodninger fra kommandolinjen, for eksempel kan du køre kommandoen "hinsightd -d URL" for at indlæse en side. Serveren er meget kompakt og fylder omkring 200KB i kompileret form (100KB eksekverbar fil og 100KB delt bibliotek). Eksterne afhængigheder inkluderer kun libc, lua, liburing og zlib, og eventuelt openssl/libressl og ffcall.

Planer for yderligere udvikling omfatter muligheden for at cache komprimerede filer, sandbox-isolering baseret på filtrering af systemkald og brug af navneområder, trafikformning, multi-threading, forbedret fejlhåndtering og maskebaseret virtuel værtsdetektion.

Resultater af syntetisk ydeevnetest (uden optimeringer i konfigurationen som den er) med ab-værktøjet, når du kører 250 og 500 (i parentes) parallelle anmodninger ("ab -k -c 250 -n 10000 http://localhost/"):

  • hinsightd/0.9.17 – 63035.01 anmodninger pr. sekund (54984.63)
  • lighttpd/1.4.67 - 53693.29 anmodninger pr. sekund (1613.59)
  • Apache/2.4.54 - 37474.10 anmodninger pr. sekund (34305.55)
  • Caddy/2.6.2 – 35412.02 anmodninger pr. sekund (33995.57)
  • nginx/1.23.2 - 26673.64 anmodninger pr. sekund (26172.73)

Kilde: opennet.ru

Tilføj en kommentar