使用 Linux io_uring 子系统引入 hinsightd HTTP 服务器

一个紧凑的 hinsightd HTTP 服务器已经发布,值得注意的是使用 Linux 内核中提供的 io_uring 异步 I/O 接口。 该服务器支持 HTTP/1.1 协议,旨在降低资源消耗,同时提供急需的功能。 例如,hinsightd 支持 TLS、反向代理 (rproxy)、在本地文件系统中缓存动态生成的内容、动态数据压缩、无连接重启、使用 FastCGI 和 CGI​​ 机制连接动态请求处理程序。 该项目代码是用 C 语言编写的,并在 BSD 许可证下分发。

为了处理配置、编写附加内容和创建请求处理程序,提供了使用 Lua 语言的能力,而这些处理程序可以直接在服务器配置文件中定义。 以插件的形式,在其中实现了更改日志记录格式、将各个日志链接到虚拟主机、定义负载平衡策略、HTTP 身份验证、URL 重写和预定工作(例如,更新 Let's Encrypt 证书)等功能。插件的形式。

该服务器附带一个库,用于将 hinsightd 功能集成到您的应用程序中。 Hinsightd 还包括从命令行发送 HTTP 请求的集成功能,例如,要加载页面,您可以运行“hinsightd -d URL”。 该服务器非常紧凑,编译后大约需要 200KB(100KB 可执行文件和 100KB 共享库)。 外部依赖项仅包括 libc、lua、liburing 和 zlib,以及可选的 openssl/libressl 和 ffcall。

进一步开发的计划包括在缓存中存储压缩文件的能力、基于系统调用过滤的沙箱隔离和命名空间的使用、带宽管理(流量整形)、多线程、改进的错误处理以及基于掩码的虚拟主机定义。

ab 实用程序在运行 250 和 500 个(括号中)并行请求(“ab -k -c 250 -n 10000 http://localhost/”)时的综合性能测试结果(未对配置进行优化):

  • hinsightd/0.9.17 - 每秒 63035.01 个请求 (54984.63)
  • lighttpd/1.4.67 - 每秒 53693.29 个请求 (1613.59)
  • Apache/2.4.54 - 每秒 37474.10 个请求 (34305.55)
  • Caddy/2.6.2 - 每秒 35412.02 个请求 (33995.57)
  • nginx/1.23.2 - 每秒 26673.64 个请求 (26172.73)

来源: opennet.ru

添加评论