Przedstawiamy serwer HTTP hinsightd, który wykorzystuje Linux-io_uring podsystem

Opublikowano kompaktowy serwer HTTP o nazwie hinsightd, wyróżniający się wykorzystaniem dostarczonego przez jądro Linux asynchroniczny interfejs wejścia/wyjścia io_uring. Serwer obsługuje protokół HTTP/1.1 i został zaprojektowany tak, aby był lekki, a jednocześnie zapewniał popularną funkcjonalność. Na przykład, hinsightd obsługuje TLS, odwrotne proxy (rproxy), buforowanie dynamicznie generowanej zawartości w lokalnym systemie plików, kompresję zwracanych danych w locie, ponowne uruchamianie bez zrywania nawiązanych połączeń oraz włączanie dynamicznych procedur obsługi żądań z wykorzystaniem mechanizmów FastCGI i CGI. Kod projektu jest napisany w języku C i rozpowszechniany na licencji BSD.

Możliwość wykorzystania języka Lua jest dostępna do przetwarzania konfiguracji, pisania dodatków i tworzenia obsługi żądań, przy czym takie obsługi można zdefiniować bezpośrednio w pliku konfiguracje serweraWtyczki udostępniają funkcje takie jak zmiana formatu dziennika, łączenie poszczególnych dzienników z hostami wirtualnymi, definiowanie strategii równoważenia obciążenia, uwierzytelnianie HTTP, przepisywanie adresów URL i wykonywanie zaplanowanych zadań (takich jak aktualizowanie certyfikatów Let's Encrypt).

Z serwer Dostępna jest biblioteka umożliwiająca integrację funkcjonalności hinsightd z aplikacjami. Hinsightd zawiera również zintegrowaną funkcjonalność do wysyłania żądań HTTP z wiersza poleceń; na przykład, aby załadować stronę, można uruchomić polecenie „hinsightd -d URL”. Serwer jest bardzo kompaktowy, zajmując około 200 KB przestrzeni po skompilowaniu (100 KB pliku wykonywalnego i 100 KB biblioteki współdzielonej). Zależności zewnętrzne obejmują tylko biblioteki libc, lua, liburing i zlib, a także opcjonalnie openssl/libressl i ffcall.

Dalsze plany rozwoju obejmują możliwość buforowania skompresowanych plików, izolację piaskownicy opartą na filtrowaniu wywołań systemowych i przestrzeniach nazw, kształtowanie ruchu, wielowątkowość, ulepszoną obsługę błędów oraz definicję wirtualnego hosta opartą na masce.

Wyniki syntetycznego testu wydajności (bez optymalizacji w konfiguracji „as-is”) przy użyciu narzędzia ab podczas uruchamiania 250 i 500 (w nawiasach) żądań równoległych („ab -k -c 250 -n 10000 http://localhost/”):

  • hinsightd/0.9.17 — 63035.01 zapytań na sekundę (54984.63)
  • lighttpd/1.4.67 - 53693.29 żądań na sekundę (1613.59)
  • Apache/2.4.54 - 37474.10 żądań na sekundę (34305.55)
  • Caddy/2.6.2 - 35412.02 żądań na sekundę (33995.57)
  • nginx/1.23.2 — 26673.64 żądań na sekundę (26172.73)

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster