Представен е HTTP сървър hinsightd, използващ Linux подсистемата io_uring

Публикуван е компактен HTTP сървър hinsightd, отличаващ се с използването на предоставян интерфейс за асинхронен вход/изход io_uring, наличен в ядрото на Linux. Сървърът поддържа протокол HTTP/1.1 и е проектиран за малко потребление на ресурси, като предоставя необходимата функционалност. Например, hinsightd поддържа TLS, обратен прокси (rproxy), кеширане на динамично генерирано съдържание на локалната файлова система, компресиране на данни в движение, рестартиране без прекъсване на установените връзки и свързване на динамични обработващи заявки с механизми FastCGI и CGI. Кодът на проекта е написан на C и се разпространява под лиценз BSD.

За обработка на конфигурацията, написване на добавки и създаване на обработващи заявки е предоставена възможност за използване на езика Lua, като такива обработващи заявки могат да се дефинират директно в файла конфигурация на сървъра. В формата на плъгини са реализирани такива възможности като промяна на формата на запис в лог, свързване на отделни логове с виртуални хостове, определяне на стратегия за балансиране на натоварването, HTTP автентикация, презаписване на URL адреси и изпълнение на планирани задания (например, обновяване на сертификати Let's Encrypt).

Вместо сървър е предоставена библиотека за интеграция на функциите на hinsightd в собствените приложения. Hinsightd също включва интегрирана функционалност за изпращане на HTTP заявки от командния ред; например, за изтегляне на страница можете да изпълните командата "hinsightd -d URL". Сървърът е много компактен и заема около 200 КБ в компилиран вид (100 КБ за изпълняемия файл и 100 КБ за споделена библиотека). Сред външните зависимости са само libc, lua, liburing и zlib, както и опционално openssl/libressl и ffcall.

В плановете за бъдещо развитие се споменава възможността за кеширане на компресирани файлове, sandbox изолация на база филтриране на системни извиквания и използване на пространства от имена, управление на пропускната способност (traffic shaping), многопоточност, подобрена обработка на грешки и определяне на виртуални хостове на базата на маски.

Резултатите от синтетичното тестване на производителността (без оптимизации в конфигурацията) с утилитата 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster