Tutvustas Linuxi io_uring alamsüsteemi kasutavat hinsightd HTTP-serverit

Avaldatud on kompaktne ülevaatlik HTTP-server, mis on märkimisväärne Linuxi kernelis pakutava asünkroonse I/O liidese io_uring kasutamise poolest. Server toetab HTTP/1.1 protokolli ja on loodud madala ressursikulu jaoks, pakkudes samas väga vajalikke funktsioone. Näiteks hinsightd toetab TLS-i, pöördpuhverserverit (rproxy), dünaamiliselt genereeritud sisu vahemällu salvestamist kohalikus failisüsteemis, andmete tihendamist lennu ajal, ühenduseta taaskäivitamist, dünaamiliste päringukäsitlejate ühendamist FastCGI ja CGI mehhanismide abil. Projekti kood on kirjutatud C-keeles ja seda levitatakse BSD litsentsi all.

Konfiguratsiooni töötlemiseks, täienduste kirjutamiseks ja päringukäsitlejate loomiseks pakutakse võimalust kasutada Lua keelt, samas kui selliseid töötlejaid saab defineerida otse serveri konfiguratsioonifailis. Pluginate kujul on rakenduses juurutatud sellised funktsioonid nagu logimisvormingu muutmine, üksikute logide linkimine virtuaalsete hostidega, koormuse tasakaalustamise strateegia määratlemine, HTTP autentimine, URL-i ümberkirjutamine ja ajastatud ajastatud töö (nt Let's Encrypt sertifikaatide värskendamine). pluginate kujul.

Serveriga on kaasas teek, mis võimaldab integreerida teie rakendustesse nutikaid funktsioone. Hinsightd sisaldab ka integreeritud funktsionaalsust HTTP-päringute saatmiseks käsurealt, näiteks lehe laadimiseks võite käivitada "hinsightd -d URL". Server on väga kompaktne ja selle kompileerimiseks kulub umbes 200 KB (100 KB käivitatav ja 100 KB jagatud teek). Välised sõltuvused hõlmavad ainult libc, lua, liburing ja zlib ning valikuliselt openssl/libressl ja ffcall.

Edasiarenduse plaanid hõlmavad tihendatud failide vahemällu salvestamise võimalust, süsteemikõnede filtreerimisel ja nimeruumide kasutamisel põhinevat liivakasti eraldamist, ribalaiuse haldust (liikluse kujundamist), mitme lõimega töötlemist, täiustatud veakäsitlust ja virtuaalsete hostide määratlemist maskide alusel.

Ab-utiliidi sünteetilise jõudluse testimise tulemused (ilma konfiguratsiooni optimeerimiseta) 250 ja 500 (sulgudes) paralleelsete päringute käitamisel ("ab -k -c 250 -n 10000 http://localhost/"):

  • hinsightd/0.9.17 – 63035.01 päringut sekundis (54984.63)
  • lighttpd/1.4.67 – 53693.29 päringut sekundis (1613.59)
  • Apache/2.4.54 – 37474.10 päringut sekundis (34305.55)
  • Caddy/2.6.2 – 35412.02 päringut sekundis (33995.57)
  • nginx/1.23.2 – 26673.64 päringut sekundis (26172.73)

Allikas: opennet.ru

Lisa kommentaar