Hinsightd HTTP-server geïntroduceerd met behulp van het Linux io_uring-subsysteem

Er is een compacte HTTP-server voor achteraf gepubliceerd, opmerkelijk vanwege het gebruik van de io_uring asynchrone I / O-interface die in de Linux-kernel wordt geboden. De server ondersteunt het HTTP/1.1-protocol en is ontworpen voor een laag verbruik van bronnen terwijl het de broodnodige functionaliteit biedt. Hindsightd ondersteunt bijvoorbeeld TLS, reverse proxying (rproxy), caching van dynamisch gegenereerde inhoud in het lokale bestandssysteem, on-the-fly datacompressie, opnieuw opstarten zonder verbinding, verbinding van dynamische verzoekhandlers met behulp van FastCGI- en CGI-mechanismen. De projectcode is geschreven in C-taal en gedistribueerd onder de BSD-licentie.

Om de configuratie te verwerken, toevoegingen te schrijven en verzoekhandlers aan te maken, wordt de mogelijkheid geboden om de Lua-taal te gebruiken, terwijl dergelijke handlers rechtstreeks in het serverconfiguratiebestand kunnen worden gedefinieerd. In de vorm van plug-ins worden functies zoals het wijzigen van het logboekformaat, het koppelen van individuele logboeken aan virtuele hosts, het definiëren van een loadbalancing-strategie, HTTP-authenticatie, het herschrijven van URL's en gepland gepland werk (bijvoorbeeld het bijwerken van Let's Encrypt-certificaten) geïmplementeerd in de vorm van plug-ins.

De server wordt geleverd met een bibliotheek voor het integreren van achteraf-functionaliteit in uw applicaties. Hinsightd bevat ook geïntegreerde functionaliteit voor het verzenden van HTTP-verzoeken vanaf de opdrachtregel, bijvoorbeeld om een ​​pagina te laden, kunt u "hinsightd -d URL" uitvoeren. De server is erg compact en neemt ongeveer 200KB gecompileerd in beslag (100KB uitvoerbaar en 100KB gedeelde bibliotheek). Externe afhankelijkheden omvatten alleen libc, lua, liburing en zlib, en optioneel openssl/libressl en ffcall.

Plannen voor verdere ontwikkeling zijn onder meer de mogelijkheid om gecomprimeerde bestanden in de cache op te slaan, sandbox-isolatie op basis van systeemoproepfiltering en het gebruik van naamruimten, bandbreedtebeheer (traffic shaping), multithreading, verbeterde foutafhandeling en definitie van virtuele hosts op basis van maskers.

De resultaten van synthetische prestatietests (zonder optimalisaties in de huidige configuratie) door het hulpprogramma ab bij het uitvoeren van 250 en 500 (tussen haakjes) parallelle verzoeken ("ab -k -c 250 -n 10000 http://localhost/"):

  • achteraf d/0.9.17 - 63035.01 verzoeken per seconde (54984.63)
  • lighttpd/1.4.67 - 53693.29 verzoeken per seconde (1613.59)
  • Apache/2.4.54 - 37474.10 verzoeken per seconde (34305.55)
  • Caddy/2.6.2 - 35412.02 verzoeken per seconde (33995.57)
  • nginx/1.23.2 - 26673.64 verzoeken per seconde (26172.73)

Bron: opennet.ru

Voeg een reactie