Linux io_uring quyi tizimidan foydalangan holda g'ayrioddiy HTTP serveri taqdim etildi

Linux yadrosida taqdim etilgan io_uring asinxron kiritish-chiqarish interfeysidan foydalanishi bilan ajralib turadigan ixcham ko'zda tutilgan HTTP serveri nashr etildi. Server HTTP/1.1 protokolini qo'llab-quvvatlaydi va juda zarur bo'lgan funksionallikni ta'minlagan holda kam resurs iste'moli uchun mo'ljallangan. Misol uchun, hinsightd TLS, teskari proksi-server (rproxy), mahalliy fayl tizimida dinamik ravishda yaratilgan tarkibni keshlash, tezkor ma'lumotlarni siqish, ulanishsiz qayta ishga tushirish, FastCGI va CGI mexanizmlari yordamida dinamik so'rovlarni qayta ishlashni qo'llab-quvvatlaydi. Loyiha kodi C tilida yozilgan va BSD litsenziyasi ostida tarqatiladi.

Konfiguratsiyani qayta ishlash, qo'shimchalar yozish va so'rovlarni qayta ishlash vositalarini yaratish uchun Lua tilidan foydalanish imkoniyati taqdim etiladi, shu bilan birga bunday ishlovchilar to'g'ridan-to'g'ri server konfiguratsiya faylida aniqlanishi mumkin. Plaginlar ko'rinishida ro'yxatga olish formatini o'zgartirish, individual jurnallarni virtual xostlar bilan bog'lash, yukni muvozanatlash strategiyasini aniqlash, HTTP autentifikatsiyasi, URL manzilini qayta yozish va rejalashtirilgan rejalashtirilgan ishlar (masalan, Let's Encrypt sertifikatlarini yangilash) kabi funktsiyalar amalga oshiriladi. plaginlar shakli.

Server sizning ilovalaringizga g'ayrioddiy funksiyalarni integratsiyalash uchun kutubxona bilan birga keladi. Hinsightd shuningdek, HTTP so'rovlarini buyruq qatoridan yuborish uchun o'rnatilgan funksiyani o'z ichiga oladi, masalan, sahifani yuklash uchun siz "hinsightd -d URL" ni ishga tushirishingiz mumkin. Server juda ixcham va taxminan 200 KB kompilyatsiya (100 KB bajariladigan va 100 KB umumiy kutubxona) oladi. Tashqi bog'liqliklarga faqat libc, lua, liburing va zlib va ​​ixtiyoriy ravishda openssl/libressl va ffcall kiradi.

Keyingi rivojlanish rejalariga siqilgan fayllarni keshda saqlash imkoniyati, tizim chaqiruvlarini filtrlash va nomlar boʻshliqlaridan foydalanishga asoslangan sandbox izolyatsiyasi, tarmoqli kengligini boshqarish (trafikni shakllantirish), koʻp ish zarralari, xatolar bilan ishlashni yaxshilash va maskalar asosida virtual xostlarni aniqlash kiradi.

250 va 500 (qavs ichida) parallel so'rovlar ("ab -k -c 250 -n 10000 http://localhost/") bajarilganda ab yordam dasturi tomonidan sintetik ishlash testi natijalari (konfiguratsiyada optimallashtirishlarsiz):

  • hisightd/0.9.17 - soniyada 63035.01 soʻrov (54984.63)
  • lighttpd/1.4.67 - soniyada 53693.29 soʻrov (1613.59)
  • Apache/2.4.54 - soniyada 37474.10 soʻrov (34305.55)
  • Caddy/2.6.2 - soniyada 35412.02 so'rov (33995.57)
  • nginx/1.23.2 - soniyada 26673.64 soʻrov (26172.73)

Manba: opennet.ru

a Izoh qo'shish