Introduciuse o servidor HTTP de hinsightd usando o subsistema io_uring de Linux

Publicouse un servidor HTTP compacto con visión de futuro, destacado polo uso da interface de E/S asíncrona io_uring proporcionada no núcleo de Linux. O servidor admite o protocolo HTTP/1.1 e está deseñado para un consumo baixo de recursos ao tempo que ofrece unha funcionalidade moi necesaria. Por exemplo, hinsightd admite TLS, proxy inverso (rproxy), almacenamento en caché de contido xerado dinámicamente no sistema de ficheiros local, compresión de datos sobre a marcha, reinicio sen conexión, conexión de controladores de solicitudes dinámicas mediante mecanismos FastCGI e CGI. O código do proxecto está escrito en linguaxe C e distribúese baixo a licenza BSD.

Para procesar a configuración, escribir adicións e crear controladores de solicitudes, ofrécese a posibilidade de usar a linguaxe Lua, mentres que tales controladores pódense definir directamente no ficheiro de configuración do servidor. En forma de complementos, funcións como cambiar o formato de rexistro, vincular rexistros individuais con hosts virtuais, definir unha estratexia de equilibrio de carga, autenticación HTTP, reescritura de URL e traballo programado programado (por exemplo, actualizar os certificados Let's Encrypt) están implementados no forma de complementos.

O servidor inclúe unha biblioteca para integrar a funcionalidade hinsightd nas súas aplicacións. Hinsightd tamén inclúe unha funcionalidade integrada para enviar solicitudes HTTP desde a liña de comandos, por exemplo, para cargar unha páxina, pode executar "hinsightd -d URL". O servidor é moi compacto e leva uns 200 KB compilados (100 KB executables e 100 KB de biblioteca compartida). As dependencias externas inclúen só libc, lua, liburing e zlib e, opcionalmente, openssl/libressl e ffcall.

Os plans para un maior desenvolvemento inclúen a capacidade de almacenar ficheiros comprimidos na caché, o illamento de sandbox baseado no filtrado de chamadas do sistema e o uso de espazos de nomes, a xestión do ancho de banda (formación do tráfico), o multithreading, o manexo de erros mellorado e a definición de servidores virtuais baseados en máscaras.

Os resultados das probas de rendemento sintético (sen optimizacións na configuración tal e como está) pola utilidade ab ao executar 250 e 500 (entre corchetes) solicitudes paralelas ("ab -k -c 250 -n 10000 http://localhost/"):

  • hinsightd/0.9.17 - 63035.01 solicitudes por segundo (54984.63)
  • lighttpd/1.4.67 - 53693.29 solicitudes por segundo (1613.59)
  • Apache/2.4.54 - 37474.10 solicitudes por segundo (34305.55)
  • Caddy/2.6.2: 35412.02 solicitudes por segundo (33995.57)
  • nginx/1.23.2 - 26673.64 solicitudes por segundo (26172.73)

Fonte: opennet.ru

Engadir un comentario