سرور HTTP را با استفاده از زیرسیستم لینوکس io_uring معرفی کرد

یک سرور HTTP جمع و جور منتشر شده است که به دلیل استفاده از رابط ورودی/خروجی ناهمزمان io_uring ارائه شده در هسته لینوکس قابل توجه است. این سرور از پروتکل HTTP/1.1 پشتیبانی می کند و برای مصرف کم منابع طراحی شده است در حالی که عملکرد بسیار مورد نیاز را ارائه می دهد. به عنوان مثال، hinsightd از TLS، پروکسی معکوس (rproxy)، ذخیره محتوای تولید شده به صورت پویا در سیستم فایل محلی، فشرده سازی اطلاعات در لحظه، راه اندازی مجدد بدون اتصال، اتصال کنترل کننده های درخواست پویا با استفاده از مکانیسم های FastCGI و CGI پشتیبانی می کند. کد پروژه به زبان C نوشته شده و تحت مجوز BSD توزیع شده است.

برای پردازش پیکربندی، نوشتن اضافات و ایجاد کنترل‌کننده‌های درخواست، امکان استفاده از زبان Lua فراهم شده است، در حالی که چنین کنترل‌کننده‌هایی را می‌توان مستقیماً در فایل پیکربندی سرور تعریف کرد. در قالب افزونه‌ها، ویژگی‌هایی مانند تغییر فرمت گزارش، پیوند لاگ‌های فردی به میزبان‌های مجازی، تعریف استراتژی متعادل‌سازی بار، احراز هویت HTTP، بازنویسی URL و کارهای زمان‌بندی‌شده (مثلاً به‌روزرسانی گواهی‌های Let's Encrypt) در شکل پلاگین ها

این سرور دارای یک کتابخانه برای ادغام عملکردهای آینده نگر در برنامه های شما است. Hinsightd همچنین دارای عملکرد یکپارچه برای ارسال درخواست های HTTP از خط فرمان است، به عنوان مثال، برای بارگذاری یک صفحه، می توانید "hinsightd -d URL" را اجرا کنید. سرور بسیار فشرده است و حدود 200 کیلوبایت کامپایل شده (100 کیلوبایت قابل اجرا و 100 کیلوبایت کتابخانه اشتراکی) نیاز دارد. وابستگی های خارجی فقط شامل libc، lua، liburing و zlib و به صورت اختیاری openssl/libressl و ffcall هستند.

برنامه‌هایی برای توسعه بیشتر شامل قابلیت ذخیره فایل‌های فشرده در حافظه پنهان، جداسازی sandbox بر اساس فیلتر کردن تماس سیستم و استفاده از فضای نام، مدیریت پهنای باند (شکل‌دهی ترافیک)، چند رشته‌ای، بهبود مدیریت خطا و تعریف میزبان‌های مجازی بر اساس ماسک‌ها است.

نتایج آزمایش عملکرد مصنوعی (بدون بهینه سازی در پیکربندی همانطور که هست) توسط ابزار 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

اضافه کردن نظر