Ieviests hinsightd HTTP serveris, izmantojot Linux io_uring apakšsistēmu

Ir publicēts kompakts pārdomāts HTTP serveris, kas ir ievērojams ar to, ka izmanto Linux kodolā nodrošināto asinhrono I/O interfeisu io_uring. Serveris atbalsta HTTP/1.1 protokolu un ir paredzēts zemam resursu patēriņam, vienlaikus nodrošinot tik ļoti nepieciešamo funkcionalitāti. Piemēram, hinsightd atbalsta TLS, reverso starpniekserveri (rproxy), dinamiski ģenerēta satura saglabāšanu lokālajā failu sistēmā, datu saspiešanu lidojumā, restartēšanu bez savienojuma, dinamisko pieprasījumu apstrādātāju savienošanu, izmantojot FastCGI un CGI mehānismus. Projekta kods ir rakstīts C valodā un tiek izplatīts saskaņā ar BSD licenci.

Lai apstrādātu konfigurāciju, rakstītu papildinājumus un izveidotu pieprasījumu apstrādātājus, tiek nodrošināta iespēja izmantot Lua valodu, savukārt šādus apstrādātājus var definēt tieši servera konfigurācijas failā. Spraudņu veidā tiek ieviestas tādas funkcijas kā reģistrēšanas formāta maiņa, atsevišķu žurnālu saistīšana ar virtuālajiem resursdatoriem, slodzes līdzsvarošanas stratēģijas definēšana, HTTP autentifikācija, URL pārrakstīšana un ieplānots plānotais darbs (piemēram, Let's Encrypt sertifikātu atjaunināšana). spraudņu forma.

Serverim ir bibliotēka pārdomātas funkcionalitātes integrēšanai jūsu lietojumprogrammās. Hinsightd ietver arī integrētu funkcionalitāti HTTP pieprasījumu nosūtīšanai no komandrindas, piemēram, lai ielādētu lapu, varat palaist "hinsightd -d URL". Serveris ir ļoti kompakts, un tā apkopošanai nepieciešami aptuveni 200 KB (100 KB izpildāmā un 100 KB koplietojamā bibliotēka). Ārējās atkarības ietver tikai libc, lua, liburing un zlib, un pēc izvēles openssl/libressl un ffcall.

Turpmākās attīstības plānos ietilpst iespēja saglabāt saspiestus failus kešatmiņā, smilškastes izolāciju, pamatojoties uz sistēmas zvanu filtrēšanu un nosaukumvietu izmantošanu, joslas platuma pārvaldību (datplūsmas veidošanu), daudzpavedienu izmantošanu, uzlabotu kļūdu apstrādi un virtuālo saimniekdatoru definīciju, pamatojoties uz maskām.

Ab utilīta veiktās sintētiskās veiktspējas pārbaudes rezultāti (bez optimizācijas konfigurācijā, kāda tā ir), izpildot 250 un 500 (iekavās) paralēlus pieprasījumus ("ab -k -c 250 -n 10000 http://localhost/"):

  • hinsightd/0.9.17 - 63035.01 pieprasījums sekundē (54984.63)
  • lighttpd/1.4.67 - 53693.29 pieprasījumi sekundē (1613.59)
  • Apache/2.4.54 — 37474.10 pieprasījumi sekundē (34305.55)
  • Caddy/2.6.2 — 35412.02 pieprasījumi sekundē (33995.57)
  • nginx/1.23.2 - 26673.64 pieprasījumi sekundē (26172.73)

Avots: opennet.ru

Pievieno komentāru