Представлен HTTP-сервер hinsightd, использующий Linux-подсистему io_uring

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 14 Dec 2022.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,027
    Reputations:
    693
    Опубликован компактный HTTP-сервер hinsightd, примечательный использованием предоставляемого в ядре Linux интерфейса асинхронного ввода/вывода io_uring. Сервер поддерживает протокол HTTP/1.1 и спроектирован для низкого потребления ресурсов с предоставлением при этом востребованной функциональности. Например, hinsightd поддерживает TLS, обратное проксирование (rproxy), кэширование динамически генерируемого контента в локальной ФС, сжатие на лету отдаваемых данных, перезапуск без разрыва установленных соединений, подключение динамических обработчиков запросов при помощи механизмов FastCGI и CGI. Код проекта написан на языке Си и распространяется под лицензией 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)
     
    _________________________
    seostock and VY_CMa like this.
Loading...