Прадстаўлены HTTP-сервер hinsightd, які выкарыстоўвае Linux-падсістэму io_uring

Апублікаваны кампактны 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)

Крыніца: opennet.ru

Дадаць каментар