Den kompakte HTTP-serveren hinsightd er publisert, bemerkelsesverdig for bruken av det asynkrone I/O-grensesnittet io_uring som tilbys i Linux-kjernen. Serveren støtter HTTP/1.1-protokollen og er designet for lavt ressursforbruk samtidig som den tilbyr etterspurt funksjonalitet. For eksempel støtter hinsightd TLS, omvendt proxy (rproxy), caching av dynamisk generert innhold i lokal filsystem, sanntidskomprimering av data som leveres, sømløs omstart av etablerte forbindelser, samt tilkobling av dynamiske forespørselshåndterere ved hjelp av FastCGI- og CGI-mekanismer. Koden til prosjektet er skrevet i C og distribueres under BSD-lisensen.
Det tilbys muligheter for behandling av konfigurasjon, skriving av tillegg og oppretting av forespørselshåndterere med bruk av Lua-språket, hvor slike håndterere kan defineres direkte i filen serverkonfigurasjonen. Funksjonaliteter implementert i form av plugins inkluderer endring av loggformat, tilknytning av spesifikke logger til virtuelle verter, definisjon av belastningsbalanseringsstrategier, HTTP-autentisering, URL-omskriving og utføring av planlagte oppgaver (for eksempel oppdatering av Let’s Encrypt-sertifikater).
Sammen med serveren det leveres et bibliotek for integrering av funksjoner fra hinsightd i egne applikasjoner. Hinsightd inkluderer også innebygd funksjonalitet for å sende HTTP-forespørsel fra kommandolinjen, for eksempel kan man kjøre kommandoen «hinsightd -d URL» for å laste en side. Serveren er svært kompakt og tar i kompilert form omtrent 200 KB (100 KB kjørbar fil og 100 KB delt bibliotek). Blant eksterne avhengigheter finnes kun libc, lua, liburing og zlib, samt valgfritt openssl/libressl og ffcall.
Planer for videre utvikling inkluderer muligheten for caching av komprimerte filer, sandbox-isolasjon basert på filtrering av systemanrop og bruk av navnestrukturer, styring av båndbredde (traffic shaping), flertråding, forbedret feilhåndtering og definisjon av virtuelle verter basert på masker.
Resultater fra syntetisk ytelsestesting (uten optimaliseringer i konfigurasjonen som den er) med verktøyet ab ved kjøring av 250 og 500 (i parantes) parallelle forespørseler («ab -k -c 250 -n 10000 http://localhost/»):
- hinsightd/0.9.17 – 63035.01 forespørseler per sekund (54984.63)
- lighttpd/1.4.67 — 53693.29 forespørseler per sekund (1613.59)
- Apache/2.4.54 — 37474.10 forespørseler per sekund (34305.55)
- Caddy/2.6.2 — 35412.02 forespørseler per sekund (33995.57)
- nginx/1.23.2 — 26673.64 forespørseler per sekund (26172.73)
Kilde: opennet.ru
