使用 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

添加評論