تقديم خادم HTTP hinsightd باستخدام نظام Linux io_uring الفرعي

تم نشر خادم HTTP مدمج، hinsightd، ويتميز باستخدامه لواجهة الإدخال/الإخراج غير المتزامنة io_uring المتوفرة في Linux kernel. يدعم الخادم بروتوكول HTTP/1.1 وهو مصمم للاستهلاك المنخفض للموارد مع توفير الوظائف عند الطلب. على سبيل المثال، يدعم hinsightd TLS، والوكيل العكسي (rproxy)، والتخزين المؤقت للمحتوى الذي تم إنشاؤه ديناميكيًا في نظام الملفات المحلي، والضغط الفوري للبيانات المرسلة، وإعادة التشغيل دون قطع الاتصالات القائمة، وربط معالجات الطلبات الديناميكية باستخدام آليات FastCGI وCGI. كود المشروع مكتوب بلغة C ويتم توزيعه بموجب ترخيص BSD.

لمعالجة التكوين وكتابة الإضافات وإنشاء معالجات الطلب، من الممكن استخدام لغة Lua، ويمكن تعريف هذه المعالجات مباشرة في ملف تكوين الخادم. في شكل مكونات إضافية، يتم تنفيذ ميزات مثل تغيير تنسيق تسجيل السجل، وربط السجلات الفردية بالمضيفين الظاهريين، وتحديد استراتيجية موازنة التحميل، ومصادقة HTTP، وإعادة كتابة عنوان URL وتنفيذ العمل المجدول (على سبيل المثال، تحديث شهادات Let's Encrypt).

يأتي الخادم مزودًا بمكتبة لدمج وظائف hinsightd في تطبيقاتك. يتضمن Hinsightd أيضًا وظيفة متكاملة لإرسال طلبات HTTP من سطر الأوامر، على سبيل المثال، يمكنك تشغيل الأمر "hinsightd -d URL" لتحميل الصفحة. الخادم مضغوط للغاية ويستهلك حوالي 200 كيلو بايت في شكل مجمع (ملف قابل للتنفيذ بحجم 100 كيلو بايت ومكتبة مشتركة بحجم 100 كيلو بايت). تتضمن التبعيات الخارجية فقط libc وlua وliburing وzlib واختياريًا opensl/libressl وffcall.

تتضمن خطط التطوير الإضافي القدرة على تخزين الملفات المضغوطة مؤقتًا، وعزل وضع الحماية استنادًا إلى تصفية مكالمات النظام واستخدام مساحات الأسماء، وتشكيل حركة المرور، والخيوط المتعددة، وتحسين معالجة الأخطاء واكتشاف المضيف الظاهري القائم على القناع.

نتائج اختبار الأداء الاصطناعي (بدون تحسينات في التكوين كما هو) مع الأداة المساعدة 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)
  • أباتشي/2.4.54 - 37474.10 طلب في الثانية (34305.55)
  • العلبة/2.6.2 – 35412.02 طلب في الثانية (33995.57)
  • nginx/1.23.2 - 26673.64 طلبًا في الثانية (26172.73)

المصدر: opennet.ru

إضافة تعليق