Linux io_uring altsistemindən istifadə edərək uzaqgörən HTTP serverini təqdim etdi

Linux nüvəsində təqdim olunan io_uring asinxron I/O interfeysindən istifadə etməklə diqqəti cəlb edən kompakt baxışlı HTTP serveri nəşr edilib. Server HTTP/1.1 protokolunu dəstəkləyir və çox ehtiyac duyulan funksionallığı təmin etməklə yanaşı, aşağı resurs istehlakı üçün nəzərdə tutulub. Məsələn, hinsightd TLS-ni, əks proksiləşdirməni (rproxy), yerli fayl sistemində dinamik olaraq yaradılmış məzmunun keşləşdirilməsini, məlumatların anında sıxılmasını, əlaqəsiz yenidən işə salmağı, FastCGI və CGI mexanizmlərindən istifadə edərək dinamik sorğu işləyicilərinin qoşulmasını dəstəkləyir. Layihə kodu C dilində yazılmışdır və BSD lisenziyası altında paylanmışdır.

Konfiqurasiyanı emal etmək, əlavələr yazmaq və sorğu işləyiciləri yaratmaq üçün Lua dilindən istifadə etmək imkanı təmin edilir, halbuki belə işləyicilər birbaşa server konfiqurasiya faylında müəyyən edilə bilər. Pluginlər şəklində giriş formatının dəyişdirilməsi, fərdi logların virtual hostlarla əlaqələndirilməsi, yük balanslaşdırma strategiyasının müəyyən edilməsi, HTTP autentifikasiyası, URL-lərin yenidən yazılması və planlaşdırılmış iş (məsələn, Let's Encrypt sertifikatlarının yenilənməsi) kimi funksiyalar tətbiq olunur. plaginlər forması.

Server proqramlarınıza uzaqgörən funksiyaları inteqrasiya etmək üçün kitabxana ilə gəlir. Hinsightd həmçinin komanda xəttindən HTTP sorğularının göndərilməsi üçün inteqrasiya edilmiş funksionallığı da əhatə edir, məsələn, səhifə yükləmək üçün siz "hinsightd -d URL"-ni işə sala bilərsiniz. Server çox yığcamdır və təxminən 200 KB tərtib edir (100 KB icra edilə bilən və 100 KB paylaşılan kitabxana). Xarici asılılıqlara yalnız libc, lua, liburing və zlib və isteğe bağlı olaraq openssl/libressl və ffcall daxildir.

Gələcək inkişaf planlarına sıxılmış faylları keşdə saxlamaq imkanı, sistem çağırışlarının filtrasiyası və ad məkanlarının istifadəsi əsasında sandbox izolyasiyası, bant genişliyinin idarə edilməsi (trafik formalaşması), çoxillik, təkmilləşdirilmiş xətaların idarə edilməsi və maskalar əsasında virtual hostların müəyyən edilməsi daxildir.

250 və 500 (mötərizədə) paralel sorğuları ("ab -k -c 250 -n 10000 http://localhost/") yerinə yetirərkən ab yardım proqramı tərəfindən sintetik performans testinin nəticələri (konfiqurasiyada optimallaşdırmalar olmadan):

  • hisightd/0.9.17 - saniyədə 63035.01 sorğu (54984.63)
  • lighttpd/1.4.67 - saniyədə 53693.29 sorğu (1613.59)
  • Apache/2.4.54 - saniyədə 37474.10 sorğu (34305.55)
  • Caddy/2.6.2 - saniyədə 35412.02 sorğu (33995.57)
  • nginx/1.23.2 - saniyədə 26673.64 sorğu (26172.73)

Mənbə: opennet.ru

Добавить комментарий