Linux io_uring ішкі жүйесін қолданып, болжамды HTTP сервері енгізілді

Linux ядросында берілген io_uring асинхронды енгізу/шығару интерфейсін пайдаланумен ерекшеленетін ықшам болжамды HTTP сервері жарияланды. Сервер HTTP/1.1 протоколын қолдайды және аса қажетті функционалдылықты қамтамасыз ете отырып, ресурстарды аз тұтынуға арналған. Мысалы, hinsightd TLS, кері прокси (rproxy), жергілікті файлдық жүйеде динамикалық түрде жасалған мазмұнды кэштеу, деректерді жылдам қысу, байланыссыз қайта іске қосу, FastCGI және CGI механизмдерін пайдаланып динамикалық сұраныс өңдеушілерін қосуды қолдайды. Жоба коды Си тілінде жазылған және BSD лицензиясы бойынша таратылады.

Конфигурацияны өңдеу, толықтырулар жазу және сұрау өңдеушілерін жасау үшін Lua тілін пайдалану мүмкіндігі қамтамасыз етіледі, бұл ретте мұндай өңдегіштерді сервер конфигурация файлында тікелей анықтауға болады. Плагиндер түрінде журнал жүргізу пішімін өзгерту, жеке журналдарды виртуалды хосттармен байланыстыру, жүктемені теңестіру стратегиясын анықтау, HTTP аутентификациясы, URL мекенжайын қайта жазу және жоспарланған жоспарланған жұмыс (мысалы, Келіңіздер шифрлаймыз сертификаттарын жаңарту) сияқты мүмкіндіктер плагиндер формасы.

Сервер сіздің қолданбаларыңызға болжамды функцияларды біріктіруге арналған кітапханамен бірге жеткізіледі. Hinsightd сонымен қатар пәрмен жолынан HTTP сұрауларын жіберуге арналған біріктірілген функционалдылықты қамтиды, мысалы, бетті жүктеу үшін «hinsightd -d URL» іске қосуға болады. Сервер өте ықшам және жинақталған шамамен 200 КБ (100 КБ орындалатын және 100 Кбайт ортақ кітапхана) алады. Сыртқы тәуелділіктерге тек libc, lua, liburing және zlib және қосымша openssl/libressl және ffcall кіреді.

Әрі қарай дамыту жоспарларына сығылған файлдарды кэште сақтау мүмкіндігі, жүйелік қоңырауларды сүзу және аттар кеңістігін пайдалану негізінде құм жәшігін оқшаулау, өткізу қабілеттілігін басқару (трафикті қалыптастыру), көп ағынды, қателерді өңдеуді жақсарту және маскалар негізінде виртуалды хосттарды анықтау кіреді.

250 және 500 (жақшада) параллельді сұрауларды («ab -k -c 250 -n 10000 http://localhost/») іске қосу кезінде ab утилитасы арқылы синтетикалық өнімділікті сынау нәтижелері (конфигурацияда оңтайландырусыз):

  • hisightd/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

пікір қалдыру