Публикуван е компактен 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
